web-dev-qa-db-ja.com

Apacheリバースプロキシの背後にある場合のwp-adminリダイレクトループ

サーバーフォールトでの私の最初の投稿なので、偽物をお詫びします:)

問題:WAFとして機能するApacheの背後にある " http:// dummy_server/wp-admin "にアクセスしようとすると、無限のリダイレクトループでスタックします。

HAProxyとWAFの完全な構成は、ここにあります https://www.haproxy.com/blog/scalable-waf-protection-with-haproxy-and-Apache-with-modsecurity/

調査できることとして、dummy_server/wp-adminに対してGETを実行するときに、Apache VHをオフにしているときに(つまり、HAプロキシのみを使用して)dummy_serverにアクセスすると、サーバーは次のように応答します。

HTTP/1.1 302 Found
Date: Wed, 20 Feb 2019 19:00:49 GMT
Location: https://dummy_server/wp-login.php?redirect_to=.....

次に、ブラウザはdummy_server/wp-loginにリダイレクトし、ユーザーの資格情報を待ちます。

それでも、WAFをアクティブにしてdummy_serverに対してGETを実行すると、Locationヘッダーが次のように変更されます。

Location: https://dummy_server/wp-admin

そして、リダイレクトループでスタックする手順。

(modsecurityを使用している)WAF構成をオフにして、Apacheがリバースプロキシとしてのみ機能するようにすると、問題は解決しません。

VM構成は次のとおりです。

<VirtualHost *:90>
       <IfModule mod_security2.c>
                Include /etc/Apache2/owasp-modsecurity-crs/crs-setup.conf
                SecRuleEngine On
                SecRequestBodyAccess On
                SecResponseBodyAccess On
        </IfModule>
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyVia Off
        ProxyPass / http://192.168.57.22:81/
        ProxyPassReverse / http://192.168.57.22:81/
</VirtualHost>

私はこのサイトを検索してきましたが、現在の窮状に役立つものは何も見つかりませんでした。何か案は?

ありがとう!

1
Fran Gimenez

ここでの問題は、インターネットに直接接続されたWebサーバーがhttpsを使用しているが、そのサーバーとApache2の間の通信はhttpであるということです。

次に、Wordpressは着信接続がhttpプロトコルで着信していることを確認しますが、サイトのURLはhttpsとして定義されています。そのため、Wordpressはリダイレクトをユーザーに送信します。

wp-config.phpに次の行を追加することで、この問題を修正しました。

$_SERVER['HTTPS'] = 'on';

これがこの問題を処理するための好ましい方法であるかどうかはわかりませんが、私にとってはうまくいきます。

また、適切なHostヘッダーをプロキシサーバーに送信する必要もあります。

4
Tero Kilkanen