Estou tentando proxy de um subdiretório para outro servidor. Meu httpd.conf:
RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
O problema é que o Apache está sempre registrando isso:
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/
Então, depois de pesquisar na internet, ativei estes módulos:
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
(Eu sei que não preciso de todos eles, mas apenas os ativei para ter certeza de que não estou perdendo um)
Mas esse erro ainda aparece e os clientes recebem um HTTP 500.
Como posso consertar isso?
mod_ssl
eSSLProxyEngine
comProxyPass
Respostas:
Isso pode acontecer se você não tiver
mod_proxy_http
ativadosudo a2enmod proxy_http
Para que meu balanceador de carga baseado em https funcione, tive que ativar o seguinte:
fonte
LoadModule ssl_module modules/mod_ssl.so
. Eu também tive que usarSSLProxyEngine on
.mod_slotmem_shm
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
em httpd.confsudo a2enmod proxy_connect
, que é encapsular https usando CONNECTPara minha instalação do Apache2.4 + php5-fpm começar a funcionar, eu precisava ativar os seguintes módulos do Apache:
Não é necessário
proxy_http
, e é isso que envia todos os.php
arquivos diretamente para o php5-fpm:fonte
No meu caso, eu precisava do
proxy_ajp
módulo.fonte
Isso estava acontecendo para mim na minha instalação do Apache / 2.4.18 (Ubuntu). No meu caso, o erro que eu estava vendo foi:
A configuração relacionada a isso foi:
"
No protocol handler was valid for the URL /~socket.io/
" significava que o Apache não podia lidar com a solicitação enviada para "ws://127.0.0.1:8090/~socket.io/
"Eu tinha
proxy_http
carregado, mas também precisavaproxy_wstunnel
. Uma vez habilitado, tudo estava bem.fonte
Para esclarecer para referência futura, o a2enmod, conforme sugerido em várias respostas acima, é para o Debian / Ubuntu. A Red Hat não usa isso para ativar os módulos Apache - em vez disso, usa instruções LoadModule no httpd.conf.
Mais aqui: /server/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
A resolução / resposta correta está nos comentários do OP:
Eu acho que você precisa de mod_ssl e SSLProxyEngine com ProxyPass #: 23414 Deadooshka
@Deadooshka Sim, isso está funcionando. Se você postar isso como uma resposta, eu aceito - das_j 29 / mai '14 às 12:04
fonte
Estou postando uma resposta aqui, pois tive a mesma mensagem de erro por um motivo diferente.
Essa mensagem de erro pode ocorrer, por exemplo, se você estiver usando o apache httpd para proxy de solicitações de uma origem no protocolo A para direcionar no protocolo B.
Aqui está o exemplo da minha situação:
No caso acima, o que estava acontecendo era simplesmente o seguinte. Eu havia ativado o proxy mod para solicitações de proxy websocket para nodejs com base no caminho / sockjs-node.
O problema é que o nó não usa o caminho / sockjs-node exclusivamente para solicitações de websocket. Ele também usa esse caminho para hospedar pontos de entrada REST que fornecem informações sobre websockets.
Dessa maneira, quando o aplicativo tentaria abrir http: // localhost: 7001 / sockjs-node / info , o apache httpd tentaria rotear a chamada restante do protocolo HTTP para uma chamada de terminal Webscoket. O nó não aceitou isso.
Isso levou à exceção acima.
Lembre-se de que, mesmo que você ative os módulos corretos, se tentar fazer o encaminhamento errado, isso terminará com o apache httpd informando que o protocolo que você tentou usar no servidor de destino não é válido.
fonte
Tentei
uwsgi://
trabalhar, mas de alguma forma o manual achou claro que eu realmente precisavamod_proxy_uwsgi
. Não era. Aqui está como você faz: Como compilar mod_proxy_uwsgi ou mod_uwsgi?fonte
Para mim, todas as respostas acima mencionadas foram ativadas no xampp ainda não funcionando. A ativação do módulo abaixo fez o host virtual funcionar novamente
fonte