Nginxのアクセス制御

nginx でIPアドレスでのアクセス制御を行う場合は、HttpAccessモジュールを使用します。

以下のように記述します。

1 2 3 4 location /blog/ { allow xxx.xxxx.xxx.xxx;
deny all; } 上記の場合、/blog/ パスには xxx.xxx.xxx.xxx のIPアドレスのみ許可して、それ以外からのアクセスは拒否するという形になります。

Nginx のルールは基本的にトップダウンで処理されます。

Apache の場合は、以下のように Order deny,allow のように順番を指定できました。

1 2 3 Order deny,allow Deny from all Allow from xxx.xxx.xxx.xxx 上記だと、xxx.xxx.xxx.xxx を許可し、それ以外を拒否するという意味になりますが、

Nginx ですと、以下のように書いた場合は、(xxx.xxx.xxx.xxx を含み)すべてアクセス不可になってしまいます。

1 2 3 4 location /blog/ { deny all; allow xxx.xxx.xxx.xxx; } 逆も同様で、以下のように書いた場合は、(xxx.xxx.xxx.xxx を含み)すべてアクセス可ということになります。

1 2 3 4 location /blog/ { allow all; deny xxx.xxx.xxx.xxx; } ちなみに、このディレクティブは、server、http ブロックでも使用可能です。

設定を反映させるために、リロードします。

1 $ sudo service nginx reload 指定されたIPアドレス以外からアクセスすると 403 となりました。

以上、簡単ではありますが、Basic認証 に続いて、IPアドレスによるアクセス制限をやってみました。