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 アドレスをベースにしたアクセス制御を試みてみました。
ではでは。