【NGINX】GKE内のnginxでクライアントのIPを取得する

公開日:2018-10-15
最終更新:2018-10-24

GCLB越しにNginxでクライアントIPを取得する

GKE(Kubernetes)上にnginxを配置し、Ingress(=Google Cloud LoadBalancer)を利用した場合、 remote_addrの値は内部のアドレスとなりX-Forwarded-Forの値は1.2.3.4, 35.123.456.789となります ※1.2.3.4はクライアントのIP, 35.123.456.789はロードバランサのIP

このX-Forwarded-ForからクライアントIPを取り出し$remote_addrを適切にセットします

設定

http {
 ...
    set_real_ip_from 35.123.456.789; # ...①
    set_real_ip_from 10.0.0.0/8; # ...②
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
        ...
}

①ロードバランサーのIP

https://console.cloud.google.com/net-services/loadbalancing/loadBalancers/list コンソールなどからIPを取り出します

②内部IP

これをセットしないとX-Forwarded-Forの値を見てくれず、そのままのremote_addrのままとなってしまいます

remote_addrを使う

セットできたらあとは自由自在

ログに出力するもよし、プロキシ先に渡すもよし

location / {
  ....
  proxy_set_header X-Real-IP $remote_addr;
  ..
}

以上

記事が少しでもいいなと思ったらクラップを送ってみよう!
36
+1
@dapontinusの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする