web-dev-qa-db-ja.com

Apache ReverseProxyPassは、httpsではなくhttpに再変換されます

Apachemod_proxyを使用してリバースプロキシを設定しています。

<VirtualHost *:443>
   ServerName reverse.server.com  
   ProxyPass / http://10.1.9.11:3000/
   ProxyPassReverse / http://10.1.9.11:3000/
   ProxyPreserveHost on
   ...snip ssl stuff...
</VirtualHost>

これはほとんどの場合正常に機能します。問題は、内部サーバーがリダイレクトを実行するときです。 proxypassreverseは場所をキャッチする必要があり、そう思われますが、 https://reverse.server.com ではなく http://reverse.server.com にリダイレクトします。 =。したがって、半分は機能しており、アドレスは正しく変更されますが、プロトコルは内部サーバーのままです。

プロキシ接続はSSLであるため、なぜこれを行うのかわかりません-何かアイデアはありますか?

5
Paul

ProxyPassReverseはこの種のリダイレクトを修正できません。この問題を解決するには、次の2つの方法があります。

  • 内部サイトにはHTTPSを使用します。例えばProxyPass / https:...およびProxyPassReverse / https:(実際には最後のものは必要ありません)。
  • リバースプロキシでmod_headersを使用します:Header edit Location ^http: https:
  • リダイレクトを変更するには、リバースプロキシでmod_rewriteを使用します。
6

同じ問題が発生しています。 2つのアイデアを試してみましたが、実際に機能するかどうかはわかりません。1/ RequestHeaderセットを使用するX-Forwarded-Protocol "https" => http://toroid.org/ams/etc/mixing-http-および-https

2 /変数httpsindicatorheader(これはWebsphere)を使用して、最初の要求がhttpsであったことをアプリケーションサーバーを介して示します。その後、すべてのリダイレクトはhttps上になります

0
Rod