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アドレスによるアクセス制限をやってみました。