しょうもないことですが、Nginx初心者なので自分用メモです。用語とか色々間違ってるかもしれない...。
Client => ALB => Nginx => Appのような構成を考える。ヘルスチェックやサーバーの特定の負荷状況を返すエンドポイント(こういうやつ)が存在し、これはAppから返す。これらは普通のユーザーには見せたくなくて、ALBやVPC内部からのみ参照されたい、というユースケース。ALBで細かいことは難しそうなので、Nginxで制御したい。
VPC範囲内のipからのアクセスであれば拒否すればいいじゃんと思ったけど、Nginxに渡ってくるipは何もしないとALBのipが渡ってきてしまう。このままでは素通ししてしまうので、Clientのipを渡して欲しい。remote_addr
というのを変更してあげるようにすればよいらしい。それを実現するNginxの設定は例えばこんな感じ。
server { listen 7777 default_server; set_real_ip_from 10.0.0.0/16; real_ip_header X-Forwarded-For; location /api/(server_avail|stats) { proxy_pass http://local-backend; allow 10.0.0.0/16; # 内部ネットワークのみ許可 deny all; } }
リバースプロキシってやつだ。
これでALBやVPC内に立てたEC2インスタンスからは/api/stats
などが参照でき、VPC外からは403が返るようになった。ちょいちょい練習して、Nginxのconfファイルを見ても頭が真っ白にならないようにしたい...。
困ったこと
Nginxの設定、自信がないので手元で動作確認をしたりテストを書いたりしたいけど、どうするのがいいのか...。趣味のやつだと気軽に本番をぶっこわすけど、仕事だとそうもいかない。
参考
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る