Tengo una aplicación web que se comunica con el usuario final a través del puerto 80 y con un servidor Express a través del puerto 3001. He configurado unproxy inversopero el código parece devolver la respuesta de mi servidor directamente a mi usuario final en lugar del código html de la aplicación web. Necesito que la aplicación web continúe enviando su respuesta HTML típica mientras envía las solicitudes de API del servidor al puerto 3001. ¿He configurado mi proxy incorrectamente?
Lo complicado aquí es que mi aplicación web actúa como servidor (para el usuario final) y como cliente (para el servidor Express).
Aquí está mi configuración de vhost:
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ServerName 192.168.253.101
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/request.log combined
SSLCertificateFile "/etc/ssl/certs/Client_Cert.crt"
SSLCertificateKeyFile "/etc/ssl/certs/Client_Key.key"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / https://localhost:3001/
ProxyPassReverse / https://localhost:443/
</VirtualHost>
Respuesta1
Modificar la línea ProxyPass a ProxyPassMatch me permitió seguir accediendo a mi página HTML desde el dominio raíz mientras pasaba cualquier llamada API adicional a mi servidor escuchando.
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ServerName 192.168.253.101
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/request.log combined
SSLCertificateFile "/etc/ssl/certs/Client_Cert.crt"
SSLCertificateKeyFile "/etc/ssl/certs/Client_Key.key"
ProxyRequests Off
<Proxy "*">
Require host yournetwork.example.com
</Proxy>
ProxyPassMatch ^/([a-z]+)$ https://localhost:3001/$1
</VirtualHost>