Nginx の設定について、前回触っていない項目をいじってるメモ。
目次
allow と deny
/etc/nginx/conf.d/allow_deny.conf
を以下のように作成します。
1 | server { |
http://[サーバーのグローバルIPアドレス]
に手元の PC とキャリア回線接続のスマートフォンでそれぞれアクセス。
前者の時は 403 が返ってくることが確認できます。
しかし、ロードバランサーを介した場合、判断されるのが中継したロードバランサーの IP になってしまいます。$http_x_forwarded_for
によって判定できるように工夫します。
/etc/nginx/conf.d/allow_deny.conf
を以下のように直します。
1 | map $http_x_forwarded_for $local { |
http://[ロードバランサーで割り当てたドメイン]
に手元の PC とキャリア回線接続のスマートフォンでそれぞれアクセス。
前者の時は 403 が返ってくることが確認できます。
ロードバランサーによる中継前のアドレスでアクセス制御できました。
結果として、$http_x_forwarded_for
を使うとき、allow と deny を使わないことになってしまいました。
条件に合致したら basic 認証
以前、nginx での basic 認証を試していました。
条件に合致した時だけ、basic 認証を要求するようにしてみます。
1 | map $http_x_forwarded_for $local { |
http://[ロードバランサーで割り当てたドメイン]
に手元の PC とキャリア回線接続のスマートフォンでそれぞれアクセス。
前者の時は、認証要求画面が出ることを確認できます。auth_basic
に対して、off
を渡すと basic 認証がかからないことから、このように記述できます。
nginx でアクセス元の IP アドレスをベースにしたアクセス制御を試みてみました。
ではでは。