nginx
Web
Quality

Nginx を使って内部IP のときのみ表示するコンテンツの設定

More than 1 year has passed since last update.


やりたいこと

クックパッドの開発者ブログを見ていて、

自社でのみ見えるコンテンツで改善・バグの指摘ができる機能をWEBサービスに作ろうと思った。

http://techlife.cookpad.com/entry/2015/10/15/100000#kotsuru_01


実際にやること

Nginx で内部IPかどうかを判別して、アプリケーションに渡す時にヘッダーを付与する。

アプリケーション側ではそのヘッダーの値によって、内部コンテンツの表示を切り替える。


環境


  • WEB,プロキシサーバ: nginx

  • アプリケーション: 何でもOK!


Nginx の設定

Nginx 側では geo を使用して、内部IPの時のフラグを作成する。

そのフラグがあれば、内部IPであることを表すヘッダーを付加して、

WEBアプリケーションへ proxy_pass する。

http {

geo $geo {
default 0;
// 内部IP を一覧で記載
127.0.0.1 1;
}

location / {
# set header
proxy_set_header X-INTERNAL-ACCESS $geo;

// 他設定。。。
...
proxy_pass http://127.0.0.1:3010;
}
}

geo 部分については別ファイルに外出しして、includeで読み込む方が良い。


アプリケーション側の設定

ヘッダーの内容を判別して、内部コンテンツの表示・非表示を切り替える。

以下はnode の例。

 if(req.headers['x-internal-access'] === '1' ) {

// 内部コンテンツを追加する処理
}