web-dev-qa-db-ja.com

2つのリバースプロキシの背後にある実際のユーザーIPを取得する

これは私の環境設定です:

  • サーバーAはサイトをホストします(Nginx + PHP-FPM + Wordpress)
  • サーバーBはサーバーAのNginxリバースプロキシです
  • Cloudflareリバースプロキシは何よりも優れています。

したがって、ユーザーリクエストは最初にCloudflareに進み、次にサーバーB、次にサーバーAに行きます。

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

サーバーBにもCloudflare wordpressプラグインをインストールしましたが、WordpressはユーザーIPアドレスではなくサーバーBのIPアドレスを取得し、Cloudflare IPアドレスを発信元IPとして検出します。 :(

Proxy Real IP をインストールすると、サーバーBのIPアドレスが実際のユーザーIPではなくCloudflare IPアドレスに変更されます。

Wordpressの最後に実際のユーザーIPアドレスを取得するためのヘルプはありますか?

1
Ali Hashemi

複数のプロキシが関係し、それらがすべてX-Forwarded-Forをサポートする場合、それぞれに値が追加されます。 Cloudflareはドキュメントでこれを述べています

Nginxからこの動作を取得するには、 real_ip_recursive オプションを設定する必要があるようです。

したがって、WordPress側では、ユーザーの実際のIPアドレスは通常、X-Forwarded-Forヘッダーのコンマ区切り値リストの最初のIPアドレスになります。

WordPressヘッダーは、「正規表現」を使用してそのフィールドのIPアドレスと一致することを示していますが、そのフィールドの複数の値を処理できることを示していません。複数の値がある場合、プラグインのコードを更新して適切に動作する必要がある場合があります。

1