Nginx IP 直アクセス不許可 & LB ヘルスチェック設定
よく設定している Nginx の configure file のアクセス元によっての振り分け方をまとめました。
1 | LB → Nginx → Rails |
Nginx 設定
- conf.d/default.conf
1 | # cannot allow ip direct |
IP 直アクセス禁止
server_name _
とすることで、ip 直アクセスをターゲットにしています。
1 | server { |
LB からのヘルスチェック
LB からヘルスチェックを向ける先を default_sever
設定することで、この server
ディレクティブを参照します。
1 | server { |
上記 config file は、AWS ALB のヘルスチェックパスを /healthcheck.html
とし、その向け先を Rails puma にしています。
Rails 側で以下の様に gem ‘ok_computer’ に向けるのも良し、独自にレスポンス返すも良しです。
1 | get 'healthcheck.html', to: 'ok_computer/ok_computer#index' |
ドメイン指定
example.com
でアクセスされた際にこちらの server
ディレクティブを参照します。
1 | server { |
ドメイン指定の悪い例
以前は以下の様に指定し、ip 直アクセス、ヘルスチェック対応していました。
1 | server { |
勿論これでも動作します。ですが、やや可読性が悪いです。
マルチドメインでの IP 直アクセス不許可に対応をする際にも、この if 文がどんどん長くなります。
その為、向け先の意図毎に server {}
を小まめに分ける運用の方が可読性が高く、実運用していてメンテナンサビリティが高いと感じました。
以上
参考になれば幸いです。
Nginx IP 直アクセス不許可 & LB ヘルスチェック設定
https://kenzo0107.github.io/2019/04/23/2019-04-24-nginx-ip-lb/