
Então eu tenho uma caixa Debian 9 rodando o Apache 2.4.25
Gostaria que o Apache também servisse conteúdo da web de outro servidor (http://192.168.1.100:8088) na rede; Eu configurei o mod_proxy para fazer isso, mas estou lutando para fazer as coisas funcionarem.
Esta configuração parece estar quase funcionando, pois recebo algum conteúdo de erro do servidor correto. Parece que há um problema de URL com o endpoint app1 sendo anexado ao URL, talvez? na verdade, esse endpoint não existe em lugar nenhum e é usado apenas para capturar solicitações.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyRequests Off
<proxy *>
Order deny,allow
Allow from all
</proxy>
ProxyPass /app1 http://192.168.1.100:8088/
ProxyPassReverse /app1 http://localhost/
</virtualHost>
Se eu tentar fazer proxy de todas as solicitações dessa forma, tudo funcionará bem, mas claramente não consigo acessar nenhum recurso no host local.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyRequests Off
<proxy *>
Order deny,allow
Allow from all
</proxy>
ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://localhost/
</virtualHost>
Acho que talvez precise realizar algum tipo de ReWrite? Não tenho muita experiência com o Apache mod_proxy.
:-(
Responder1
Conforme mencionado nos comentários, você tem pelo menos dois problemas aparentes:
As barras de “terminação” em cada indivíduo
ProxyPass
eProxyPassReverse
declaração precisam corresponder.ProxyPass
eProxyPassReverse
precisa se referir ao mesmo host.
Então, no seu primeiro exemplo:
ProxyPass /app1 http://192.168.1.100:8088/
ProxyPassReverse /app1 http://localhost/
Deveria estar:
ProxyPass /app1 http://192.168.1.100:8088
ProxyPassReverse /app1 http://192.168.1.100:8088
Ou:
ProxyPass /app1 http://localhost
ProxyPassReverse /app1 http://localhost
Para o seu segundo exemplo, /
é considerada uma barra de “terminação” para os fins mencionados aqui. Então:
ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://localhost/
Simplesmente precisa ter os hosts correspondentes:
ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://192.168.1.100:8088/
Ou:
ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/
Notas
Provavelmente vale a pena mencionar que a maneira como o Apache lida com os URLs que ele faz proxy
/
pode obter melhores resultados do que/app1
depender de como o aplicativo receptor constrói seus próprios URLs.Talvez seja necessário fazer proxy de vários URLs, dependendo de como o aplicativo receptor funciona.
Você pode querer habilitar
mod_proxy_html
emod_proxy_http
ainda por cimamod_proxy
se eles ainda não estiverem habilitados por algum motivo.