やりたいこと
クックパッドの開発者ブログを見ていて、
自社でのみ見えるコンテンツで改善・バグの指摘ができる機能をWEBサービスに作ろうと思った。
実際にやること
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' ) {
// 内部コンテンツを追加する処理
}