
Tengo una caja Debian 9 ejecutándose con Apache 2.4.25.
Me gustaría que Apache también sirviera contenido web desde otro servidor (http://192.168.1.100:8088) En la red; Configuré mod_proxy para hacer esto, pero tengo dificultades para que todo funcione.
Parece que esta configuración está casi funcionando ya que recibo algún contenido de error del servidor correcto, parece que hay un problema de URL con el punto final app1 agregado a la URL, ¿quizás? este punto final en realidad no existe en ninguna parte y solo se usa para capturar solicitudes.
<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>
Si intento enviar todas las solicitudes por proxy, funciona bien, pero claramente no puedo acceder a ningún recurso en localhost.
<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>
Creo que quizás necesito realizar algún tipo de reescritura. No tengo mucha experiencia en el uso de Apache mod_proxy.
:-(
Respuesta1
Como se menciona en los comentarios, tiene al menos dos problemas aparentes:
Las barras "de terminación" en cada individuo
ProxyPass
yProxyPassReverse
declaración deben coincidir.ProxyPass
yProxyPassReverse
necesita hacer referencia al mismo host.
Entonces, en tu primer ejemplo:
ProxyPass /app1 http://192.168.1.100:8088/
ProxyPassReverse /app1 http://localhost/
Debiera ser:
ProxyPass /app1 http://192.168.1.100:8088
ProxyPassReverse /app1 http://192.168.1.100:8088
O:
ProxyPass /app1 http://localhost
ProxyPassReverse /app1 http://localhost
Para el segundo ejemplo, /
se considera una barra diagonal "de terminación" para los fines mencionados aquí. Entonces:
ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://localhost/
Simplemente necesita que los hosts coincidan:
ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://192.168.1.100:8088/
O:
ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/
Notas
Probablemente valga la pena mencionar que la forma en que Apache maneja las URL que representa,
/
puede obtener mejores resultados que/app1
dependiendo de cómo la aplicación receptora construye sus propias URL.Es posible que necesites proxy de varias URL dependiendo de cómo funcione la aplicación receptora.
Es posible que desees habilitar
mod_proxy_html
ymod_proxy_http
ademásmod_proxy
si aún no están habilitados por algún motivo.