Почему я получаю ошибку “Неверная команда ‘ProxyPass'” при запуске своего сервера Apache 2.2?

Вопрос или проблема

У меня возникают проблемы с настройкой прокси в Apache 2.2

Когда я пытаюсь его запустить, я получаю ошибку Invalid command 'ProxyPass'. Это может означать, что proxy_http_module не загружен. Однако когда я смотрю отладочную информацию, он, кажется, загружен. Например,

E:\Apache\bin>httpd -e debug
[Пт. 21 Авг 2015 15:48:55] [debug] mod_so.c(246): загружен модуль actions_module
...
[Пт. 21 Авг 2015 15:48:55] [debug] mod_so.c(246): загружен модуль proxy_ajp_module
[Пт. 21 Авг 2015 15:48:55] [debug] mod_so.c(246): загружен модуль proxy_http_module   <-----
[Пт. 21 Авг 2015 15:48:55] [debug] mod_so.c(246): загружен модуль setenvif_module
....
[Пт. 21 Авг 2015 15:48:55] [debug] mod_so.c(246): загружен модуль jk_module
[Пт. 21 Авг 2015 15:48:55] [notice] Отключено использование AcceptEx() API WinSock2
Ошибка синтаксиса в строке 84 файла E:/Apache/conf/extra/httpd-ssl.conf:
Неверная команда 'ProxyPass', возможно, опечатка или определена модулем, не включенным
в конфигурацию сервера

Так что мне кажется, что proxy_http_module загружается. Я не понимаю, почему он не знает, что такое ProxyPass.

Я, безусловно, включил его в своем файле httpd.conf

#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so     # <--------------
#LoadModule rewrite_module modules/mod_rewrite.so

Примечание: Я пытаюсь сделать это через SSL-соединение, поэтому я загружаю httpd-ssl.conf позже в моем файле httpd.conf

<IfModule ssl_module>
Include conf/extra/httpd-ssl.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Затем в httpd-ssl.conf я настроил запись VirtualHost

<VirtualHost _default_:443>
    DocumentRoot "E:/Apache/htdocs"
### условный IP
    ServerName 127.12.34.56:443
    ServerAdmin [email protected]
    ErrorLog "E:/Apache/logs/error.log"
    TransferLog "E:/Apache/logs/access.log"

    #ProxyRequests Off
### Здесь возникает ошибка
    ProxyPass / http://myfirewalledserver:80/
    #ProxyPassReverse / http://myfirewalledserver:80/
</VirtualHost>                                  

Что я пропустил здесь?

proxy_http модуль требует proxy, и директива ProxyPass определена в последнем.

Убедитесь, что он также загружен.

Спасибо Милду Сингу

Загрузите модуль, выполнив эту команду:

sudo a2enmod proxy_http

Ответ или решение

Ошибка "Invalid command ‘ProxyPass’" при запуске Apache 2.2 может возникать по нескольким причинам, даже если вы видите, что модуль proxy_http_module загружен в процессе отладки. Давайте разберем это более подробно и выясним, что может быть не так.

1. Проверка загрузки необходимых модулей

Как указано в вашем процессе отладки, действительно, модуль proxy_http_module загружен. Однако для корректной работы директивы ProxyPass требуется, чтобы также был загружен основной модуль proxy. Этот модуль отвечает за функции совместимости с прокси и, соответственно, директивы связанные с проксированием.

Вы должны убедиться, что в файле конфигурации httpd.conf или в других включенных файлах конфигурации загружен модуль proxy. Проверьте, чтобы следующая строка была раскомментирована:

LoadModule proxy_module modules/mod_proxy.so

2. Порядок загрузки модулей

Убедитесь, что порядок загрузки модулей правильный. Модуль proxy_http_module загружается после proxy_module, так как он зависит от него. Обратный порядок загрузки может привести к ошибкам. Например:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

3. Предоставление правильного контекста

Также учтите, что директивы ProxyPass и ProxyPassReverse должны находиться в блоке <VirtualHost>, который настроен на правильный IP и порт, как у вас в конфигурации. Если вы переместили или изменили этот блок, убедитесь, что конфигурация исправна.

4. Дополнительные модули для SSL

Если вы работаете в контексте SSL, это также может потребовать загрузки дополнительных модулей, таких как ssl_module, как вы уже сделали. Убедитесь, что он загружается и работает корректно:

LoadModule ssl_module modules/mod_ssl.so

5. Проверка ошибок

После внесения необходимых изменений, убедитесь, что вы проверяете файл error.log, чтобы увидеть, есть ли другие ошибки, которые могут указывать на проблемы с конфигурацией. Это также может помочь в диагностике.

6. Перезапуск Apache

После внесения всех изменений не забудьте перезапустить сервер Apache командой:

httpd -k restart

Заключение

Если вы выполните все указанные шаги и убедитесь, что все необходимые модули загружены и находятся в правильном порядке, ошибка "Invalid command ‘ProxyPass’" должна исчезнуть. Если проблема все же остается, возможно, стоит рассмотреть возможность конфликта с другими модулями или настройками в вашем Apache.

Оцените материал
Добавить комментарий

Капча загружается...