NginxでIP直打ちアクセスを拒否する

2020年11月1日

一部ドメインのみ許可するか、IPでのアクセスを全て拒否するかどちらかにする

1. 指定したドメインのみ許可する

複数ドメインを紐付けている場合は全て書く。

server {
    listen      80;
    server_name  example.com;

    # その他設定
}

server {
    listen      80 default_server;
    server_name _;
    return      444;
}

2. IPアドレスでのアクセスを正規表現で拒否する

ALBだとIPが変わるので、正規表現を使う。下記のserverディレクティブを追加する。
正規表現はもっと良い書き方あるかも

server {
    listen      80;
    server_name  "~^(\d{1,3}\.){3}\d{1,3}$";
    return      444;
}

IPでのアクセスを制限すると、ロードバランサのヘルスチェックが通らなくなるので、そこはポートとかの設定を変えて対応する必要あり。