
「マスター」サイトの URL にリモート サイト「east」へのプロキシを作成しようとしていますが、リダイレクト ループに陥ってしまいます。これは予想していた動作ではありません。ProxyPass がコンテンツを URL に書き換えることは理解していましたが、「マスター」ホストにリダイレクトしているかのように動作しているように思います。
適用される構成ファイルは非常に簡単です。
user@master:/etc/apache2/conf-enabled# cat multisite_proxy.conf
<Location /prod_east>
ProxyPass http://east.domain.com/prod_east
ProxyPassReverse http://east.domain.com/prod_east
</Location>
cURL を使用すると、出力は次のようになります。
user@master:~# curl -IL https://master.domain.com/prod_east/
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 22:58:41 GMT
Server: Apache/2.4.38 (Debian)
Location: https://master.domain.com//prod_east/
Content-Type: text/html; charset=iso-8859-1
...
curl: (47) Maximum (50) redirects followed
east の Apache ログには cURL のリクエストが表示されています。
ブラウズすると、http://east.domain.com/prod_east
アプリケーションのログイン ページにリダイレクトされます (予想どおり)。これを cURL で調べると、次のようになります。
user@master:~# curl -IL http://east.domain.com/prod_east
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache/2.4.38 (Debian)
Location: https://east.domain.com//prod_east
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Location: https://east.domain.com/prod_east/subpath/
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 302 FOUND
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Vary: Cookie
Cache-Control: no-cache
**Location: /prod_east/subpath/login.py?_origtarget=index.py**
Content-Type: text/html; charset=UTF-8
最後の Location: エントリについて疑問に思うことがあります。これはクライアントに にリダイレクトするように指示していますが、 ProxyPass ルールにより/prod_east/
から要求されると予想されます。east.domain.com
プロキシ モジュールと書き換えモジュールが有効になっています。
何か助けていただけますか? 明らかに何かが理解できていないようです...
前もって感謝します。
答え1
ここでの問題は、「east」サイトが HTTPS へのリダイレクトを強制しており、Apache が TLS コンテンツをプロキシするように構成されていなかったことです。「master」で SSLProxy を有効にし、multisite_proxy.conf
https を参照するように更新すると (したがって、HTTP->HTTPS リダイレクトはスキップされます)、これは動作するようになりました。