![WordPress が mod_remoteip を使用してプロキシ IP アドレスを表示する](https://rvso.com/image/658358/WordPress%20%E3%81%8C%20mod_remoteip%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%20IP%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B.png)
以前にもこれを設定したことがあり、他のサーバーでは機能しましたが、このインスタンスではなぜ機能しないのか、まったくわかりません。ただし、考えられる原因はあります。これはすべて Amazon Web Services にあります。
この場合、メイン サイトは IIS 8 を使用して Windows サーバーでホストされています。ブログは WordPress をホストするために Ubuntu/Apache 2.4.6 を実行している別のサーバーにあります。メイン サイトは複数の IP アドレスをサポートするために VPC 内にあります。ブログは VPC 外にあります。
他のセットアップ (動作する) では、両方とも IIS の代わりに nginx をリバース プロキシ サーバーとして使用し、プロキシとサーバーを同じ VPC に配置します。これは本当に重要ですか?
動作構成から:
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 172.31.x.x/32
動作しない構成:
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 54.2x.x.x
私は次のようなバリエーションも試しました:
RemoteIPTrustedProxy 54.2x.x.x # tried /32 and /24
RemoteIPInternalProxy 54.x.x.x/32 # also tried /24
RemoteIPTrustedProxy www...
テスト PHP ページを使用して動作しているかどうかを確認すると、次のようになりますprint_r($_SERVER);
。
[HTTP_X_FORWARDED_BY] => www.....
[HTTP_X_FORWARDED_FOR] => x.x.x.x:x
[SERVER_ADDR] => 10.230.x.x
[SERVER_PORT] => 80
[REMOTE_ADDR] => 54.2x.x.x
PHP の getheaders 関数からの出力は次のとおりです。
[X-Forwarded-By] => www....
[X-Forwarded-For] => x.x.x.x:x
のドキュメンテーションmod_remoteip
イントラネット IP アドレスとしてリストされています172.16/12
。モジュールは、イントラネット ブロックを検出しないために、実際に正しく動作しないのでしょうか? エラー ログにもこれに関する記述は見つかりませんでした。
それがそのように機能するのは馬鹿げているように思えますが、それが唯一意味をなす理論です。
また、誰かが質問するだろうとわかっているので、次の点にも注意してください。ブログ サーバーをセットアップした後に VPC をセットアップしましたが、VPC 内で再起動する作業をまだ行っていません。これを VPC なしで動作させようとしていましたが、それが問題であれば、それを実行することを検討します。
ありがとう。