プロキシが Web アプリのコンテンツを返さない

プロキシが Web アプリのコンテンツを返さない

私はポート80経由でエンドユーザーと通信し、ポート3001経由でExpressサーバーと通信するWebアプリケーションを持っています。リバースプロキシしかし、コードは Web アプリの HTML コードではなく、サーバーの応答をエンド ユーザーに直接返しているようです。Web アプリがサーバーの API 要求をポート 3001 に送信している間、通常の HTML 応答を送信し続ける必要があります。プロキシの設定が間違っていますか?

ここで注意しなければならないのは、私の Web アプリがサーバー (エンド ユーザーに対して) とクライアント (Express サーバーに対して) の両方の役割を果たしていることです。

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

答え1

ProxyPass の行を ProxyPassMatch に変更すると、追加の API 呼び出しをサーバー リッスンに渡しながら、ルート ドメインから HTML ページにアクセスできるようになりました。

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

関連情報