【解決方法】Dockerのnginx-proxyを経由するとアクセス元のIPが正しく取得できない件について

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
リバースプロキシを立てると、アクセス元の正しいIPが取得できなかったため 取得させるための設定をメモします。
環境
- CentOS 7.4
- Docker 18.03
概要
Dockerのnginx-proxyのコンテナをリバースプロキシとして設置し
それぞれのコンテナへ別々のホストを立てリクエストを振り分けました。
webブラウザからa.hoge.jp
へアクセスすると
アクセス元のIPがnginx-proxy
のIPからアクセスしたことになってしまい
適切なアクセス元を取得出来ませんでした。
nginx-proxy
https://github.com/jwilder/nginx-proxy
解決方法
以下の対応で解決しました。
- nginx-proxyの設定にX-Forwarded-Forを設定
- a.hoge.jp側の設定
nginx-proxyの設定にX-Forwarded-Forを設定
X-Forwarded-Forとは?
HTTPヘッダの一つでロードバランサやプロキシを経由する際に
クライアントの送信元IPアドレスを特定する際のデファクトスタンダードです。
設定ファイルに下記を追記します。
/etc/nginx/conf.d/default.confserver {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
a.hoge.jp側の設定
x-forwarded-for
は偽装可能なので、信頼できるところ以外からは
real_ip_header
を使わないようにするための設定です。
<nginx-proxyのIP>
はnginx-proxyのIPに置き換えてください。
/etc/nginx/conf.d/default.confserver {
set_real_ip_from <nginx-proxyのIP>;
real_ip_header X-Forwarded-For;
}
Dockerの記事Docker
- article
Docker開発の落とし穴:よくある失敗パターン10選+実践的な回避策
- article
社内開発でDockerを導入する際に考えるべき運用ポイント
- article
Kubernetes vs Docker Compose:どっちを選ぶべき?違いと使い分けについて紹介
- article
Mac Apple Silicon(M1/M2/M3/M4)でDockerを快適に動かすためのTips集
- article
GitHub Actions × DockerでCI/CD環境を構築するベストプラクティス
- article
Dockerのマルチステージビルドとは?これらを活用し本番用イメージをスリムに保つやり方を紹介
- article
【解決方法】Cursor使えない?頻発する「Connection failed. If the problem persists ...」エラーの対処
- article
一瞬で表示!Next.js × Edge Runtimeで始める超低遅延サーバーレス開発
- article
Next.jsでSEO対策を強化するための5つのポイント + アンチパターンの回避策
- article
Docker開発の落とし穴:よくある失敗パターン10選+実践的な回避策
- article
社内開発でDockerを導入する際に考えるべき運用ポイント
- article
Kubernetes vs Docker Compose:どっちを選ぶべき?違いと使い分けについて紹介