Nginx で AWS、Google Cloud LB、Cloudflare からクライアント IP を取得する方法?

Nginx で AWS、Google Cloud LB、Cloudflare からクライアント IP を取得する方法?

クラウドでの Web アプリケーションのセットアップは常に楽しくてエキサイティングです。

最近、Cloudflare の背後で AWS でホストされている Tools ツールを起動しました。

AWS アプリケーション ロード バランサーと Web サーバーとして Nginx を使用しています。命を吹き込んだ後、access.log を見に行ったところ、すべてのリクエストが内部(ロード バランサー) IP からのものとしてマークされていることに気付きました。

これは、Web サーバーのログを分析して訪問者の位置を確認したい場合には適していません。クライアント IP が見つからないか、復元するために構成を変更する必要があることに気付きました。

あなたも私と同じ状況ですか?

さて、Nginx アクセス ログでクライアント IP を取得する方法は次のとおりです。

AWS または Google Cloud LB から訪問者 IP を取得する

  • Nginx Webサーバーにログインします
  • インストールされているパス (デフォルトの場所 /etc/nginx) に移動します。
  • nginx.confファイルのバックアップを作成します。
  • HTTP ブロックの下に以下を追加します
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
  • Nginx を再起動すると、access.log ファイルに訪問者の IP が表示されるはずです。

Cloudflare を使用している場合は、クライアントの IP ではなく Cloudflare の IP が表示されるため、以下のことも行う必要があります。

CloudflareからクライアントIPを取得する

Cloudflare は優れた CDN およびセキュリティプロバイダーであり、私はとても気に入っています。私と同じように Cloudflare を使用していて、Web サーバー ログ内の訪問者 IP を復元したい場合は、次の方法でそれを行うことができます。

Nginxサーバーにログインしていると仮定します。

サイト構成ファイルのバックアップを作成します (通常はここ – /etc/nginx/sites-available/yourdomain)

ファイルの先頭に以下を追加します

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;

注: 公式ページから IP リストを検証することもできます。

Nginx を再起動すると、クライアント IP が表示されるはずです。これは私にとって役に立ったので、あなたにも役立つことを願っています。

次に、Cloudflare Workers を使用して安全なヘッダーを実装する方法を確認します。

「 Nginx で AWS、Google Cloud LB、Cloudflare からクライアント IP を取得する方法?」についてわかりやすく解説!絶対に観るべきベスト2動画

NGINX によるロード バランシング
NGINX をロードバランサーとして構成する方法