代理未返回 Web 应用内容

代理未返回 Web 应用内容

我有一个 Web 应用程序,它通过端口 80 与最终用户通信,通过端口 3001 与 Express 服务器通信。我设置了一个反向代理但代码似乎直接将我的服务器响应返回给我的最终用户,而不是 Web 应用程序 html 代码。我需要 Web 应用程序继续发送其典型的 html 响应,同时将其服务器 api 请求发送到端口 3001。我的代理设置是否不正确?

这里的棘手之处在于我的 Web 应用程序既充当服务器(对于最终用户),又充当客户端(对于 Express 服务器)。

这是我的虚拟主机配置:

<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>

图表

答案1

将 ProxyPass 行修改为 ProxyPassMatch 允许我仍然从根域访问我的 HTML 页面,同时将任何其他 api 调用传递给我的服务器监听。

<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>

相关内容