Я пытаюсь прокси подкаталог на другой сервер. Мой httpd.conf:
RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
Проблема в том, что Apache всегда регистрирует это:
AH01144: No protocol handler was valid for the URL /subdir/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://localhost/
Поэтому после поиска в интернете я активировал следующие модули:
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so
(Я знаю, что мне не нужны все из них, но я просто активировал их, чтобы убедиться, что я не пропустил один)
Но эта ошибка все еще появляется, и клиенты получают HTTP 500.
Как я могу это исправить?
mod_ssl
иSSLProxyEngine
сProxyPass
Ответы:
Это может произойти, если вы не
mod_proxy_http
включилиsudo a2enmod proxy_http
Для того, чтобы мой балансировщик нагрузки на основе https работал, мне нужно было включить следующее:
источник
LoadModule ssl_module modules/mod_ssl.so
. Я также должен был использоватьSSLProxyEngine on
.mod_slotmem_shm
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
в httpd.confsudo a2enmod proxy_connect
, что для туннелирования https с помощью CONNECTЧтобы моя установка Apache2.4 + php5-fpm начала работать, мне нужно было активировать следующие модули Apache:
Нет необходимости
proxy_http
, и это то, что отправляет все.php
файлы прямо в php5-fpm:источник
В моем случае мне был нужен
proxy_ajp
модуль.источник
Это происходило для меня в моей настройке Apache / 2.4.18 (Ubuntu). В моем случае ошибка, которую я видел, была:
Конфигурация, связанная с этим, была:
"
No protocol handler was valid for the URL /~socket.io/
" означало, что Apache не может обработать запрос, отправляемый в "ws://127.0.0.1:8090/~socket.io/
"Я
proxy_http
загрузил, но тоже нужноproxy_wstunnel
. Как только это было включено, все было хорошо.источник
Чтобы уточнить для дальнейшего использования, a2enmod, как предлагается в нескольких ответах выше, предназначен для Debian / Ubuntu. Red Hat не использует это для включения модулей Apache - вместо этого он использует операторы LoadModule в httpd.conf.
Подробнее здесь: /server/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
Решение / правильный ответ в комментариях к ОП:
Я думаю, что вам нужны mod_ssl и SSLProxyEngine с ProxyPass - Deadooshka 29 мая '14 в 11:35
@Deadooshka Да, это работает. Если вы отправите это как ответ, я могу принять это - das_j 29 мая '14 в 12:04
источник
Я отправляю ответ здесь, так как у меня было то же самое сообщение об ошибке по другой причине.
Это сообщение об ошибке может появиться, например, если вы используете apache httpd для прокси-запросов от источника по протоколу A к цели по протоколу B.
Вот пример моей ситуации:
В случае выше, то, что происходило, было просто следующим. Я включил мод-прокси для прокси-запросов websocket к nodejs на основе path / sockjs-node.
Проблема в том, что узел не использует путь / sockjs-узел исключительно для запросов веб-сокетов. Он также использует этот путь для размещения точек входа REST, которые предоставляют информацию о веб-сокетах.
Таким образом, когда приложение попытается открыть http: // localhost: 7001 / sockjs-node / info , apache httpd попытается перенаправить остальной вызов от протокола HTTP к вызову конечной точки Webscoket. Узел не принял это.
Это привело к исключению выше.
Так что помните, что даже если вы включите нужные модули, если вы попытаетесь выполнить неправильную переадресацию, это закончится тем, что apache httpd сообщит вам, что протокол, который вы пытались использовать на целевом сервере, недействителен.
источник
Я пытался получить
uwsgi://
работу, но каким-то образом руководство подумало, что для меня ясно, что мне действительно нужноmod_proxy_uwsgi
. Не было. Вот как вы это делаете: Как скомпилировать mod_proxy_uwsgi или mod_uwsgi?источник
Для меня все вышеупомянутые ответы были включены на xampp до сих пор не работает. Включение модуля ниже заставило виртуальный хост работать снова
источник