概要
自分のWebサーバにログインする際、自宅からやVPNからのアクセスは認証を無しにするが、外部からはアクセスをさせたくない場合の設定です。
ip filter の要領でnginxにも設定することができます。
nginxのインストールについてはこちら↓
yunabe.hatenablog.com
nginxのコンフィグを変更します
vi /etc/nginx/conf.d/default.conf
以下のコンフィグではベーシック認証はbase64の平文で認証されるため、SSL通信で暗号化しベーシック認証をかけています。
server { listen 443 default ssl; ssl on; server_name xxx.com; ssl_certificate /etc/nginx/conf.d/server.crt; ssl_certificate_key /etc/nginx/conf.d/server.key; client_max_body_size 100M; location / { root /usr/share/nginx/html; index index.php; satisfy any; # ※1 allow x.x.x.x/32; # ※2 deny all; # ※3 auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; 以下略....
※1 satisfy anyを指定することでIPかベーシック認証となる(ないとIPかつベーシック認証)
※2 許可するソースIPアドレスを記載 試していないが、おそらく/32じゃなく/24等ネットワークでも指定できそう
※3 暗黙のdenyはないので明示的に拒否する
変更後nginxを再起動
service nginx restart