nginxでIPアドレスによるアクセス制限の設定方法
- 公開日:2018/04/01
- 更新日:2018/10/19
- 投稿者:n bit
nginxでサーバメンテナンスや管理者ディレクトリの制限等で利用する、IPアドレスによるアクセス制限の設定方法を解説します。
この記事は約 分で読めます。(文字)
nginxでIPアドレスによるアクセス制限
IPアドレスによるアクセス制限を行うシーンとしては、主にサーバのメンテナンスや更新作業時に外部からのアクセスを制限しメンテナンス作業者のIPアドレスのみを許可する場合。または、管理者ファイルがあるディレクトリなど外部からのアクセスを制限したいディレクトリ等がある場合が考えられます。
この場合、サーバ単位(ドメイン単位)でアクセス制限を行うかディレクトリ単位でアクセス制限を行うかの違いがあります。どちらに制限を行うかによってアクセス制限のディレクティブを記述するモジュールの場所が変わってきますのでどちらに対して制限を行うのか事前に確認しておきましょう。
- サーバ単位:Serverモジュールに記述(または、Httpモジュール)
- ディレクトリ単位:Locationモジュールに記述
モジュール名 | 主な設定内容 |
---|---|
Serverモジュール | 仮想サーバに関する設定 |
Locationモジュール | ディレクトリ毎のドキュメントルートを設定 |
モジュールやディレクティブ、また、その構成についての解説は下記のページで行っています。必要な場合はご覧になってください。
記述するディレクティブは下記の2行です。
allow 'アクセス許可するIPアドレス';
deny all;
注意点としては上のディレクティブから順番に処理されていきますので、上下逆に記述してしまいますとすべてのアクセスを制限してしまいます。deny all;が先に処理されるためすべてのアクセスを拒否してしまうためです。
- deny all:すべてのアクセスを拒否
- allow all:すべてのアクセスを許可
そのため、必ず「allow 'アクセス許可するIPアドレス';」を先に記述してアクセスを許可したいIPアドレスを処理できるようにしておいてください。
自分の端末のIPアドレスの調べ方
自分の端末のIPアドレスがわからない場合は下記のサイトにアクセスすることで自分の端末のIPアドレスが表示されます。
サーバ単位のアクセス制限設定
サーバ単位でIPアドレスによるアクセス制限を行う場合はServerモジュール内に記述します。
server {
allow 'アクセス許可するIPアドレス';
deny all;
}
ディレクトリ単位のアクセス制限設定
ディレクトリ単位でIPアドレスによるアクセス制限を行う場合はLocationモジュール内に記述します。
location /制限先ディレクトリ/ {
allow 'アクセス許可するIPアドレス';
deny all;
}
設定を反映する
nginxを再起動して設定ファイルを反映させます。
$ sudo nginx -s reload
違うIPアドレスでアクセスして403が表示されれば正しく設定できています。
今日のdot
管理者ファイルがあるディレクトリなどは外部からのアクセスを制限しておく必要があります。不正ログイン等によるデータ改ざん等を防止するためしっかりと設定しておきましょう。