代理程式不傳回 Web 應用程式內容

代理程式不傳回 Web 應用程式內容

我有一個 web 應用程序,它透過連接埠 80 與最終​​用戶通信,並透過連接埠 3001 與 Express 伺服器通信。反向代理但該程式碼似乎將我的伺服器回應直接返回給我的最終用戶,而不是 Web 應用程式 html 程式碼。我需要 Web 應用程式繼續發送其典型的 html 回應,同時將其伺服器 api 請求發送到連接埠 3001。

這裡棘手的事情是我的網路應用程式既充當伺服器(對於最終用戶)又充當客戶端(對於 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>

相關內容