勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

NginxでアクセスIP制限(ブラックリスト / ホワイトリスト)を行う方法

  Nginx サーバー

NginxでアクセスIP制限を試してみたい。また、特定のIPのみ許可するホワイトリスト形式と、特定のIPを拒否するブラックリスト方式のどちらも覚えておきたい。以下に対応方法をメモ。

 

対応方法

ホワイトリスト形式(特定のIPのみ許可)

拒否した対象に403を返す場合は以下。

location / {
    allow xxx.xxx.xxx.1;
    allow xxx.xxx.xxx.2;
    deny all;
}

拒否した対象に444を返す場合は以下。

# ホワイトリストの作成(nginx.confのhttpブロック内に記述)
map $remote_addr $whitelist{
    # 拒否は0を指定
    default       0;
    # 許可は1を指定
    xxx.xxx.xxx.1 1;
    xxx.xxx.xxx.2 1;
}

# 設定したいブロック内に記述
server {
    location / {
        # 拒否する場合は444を返す
        if ($whitelist = 0) {
            return 444;
        }
    }
}

ブラックリスト方式(特定のIPを拒否)

拒否した対象に403を返す場合は以下。

location / {
    deny xxx.xxx.xxx.1;
    deny xxx.xxx.xxx.2;
    allow all;
}

拒否した対象に444を返す場合は以下。

# ブラックリストの作成(nginx.confのhttpブロック内に記述)
map $remote_addr $blacklist {
    # 許可は0を指定
    default           0;
    # 拒否は1を指定
    xxx.xxx.xxx.1 1;
    xxx.xxx.xxx.2 1;
}

# 設定したいブロック内に記述
server {
    location / {
        # 拒否する場合は444を返す
        if ($blacklist = 1) {
            return 444;
        }
    }
}

 - Nginx サーバー

  関連記事

Nginxのバーチャルホスト設定とLet's Encryptの導入
Nginxのバーチャルホスト設定とLet's Encryptの導入

NginxでVirtualHostの設定し、複数のドメインを同一サーバに割り当て ...

コンテナ側のApacheのアクセスログにリバースプロキシのIPではなく本来のアクセスIPを出力する方法
コンテナ側のApacheのアクセスログにリバースプロキシのIPではなく本来のアクセスIPを出力する方法

ホスト側Nginxからリバースプロキシ経由でApacheコンテナに接続する環境に ...

Nginxでリダイレクト(http->https)及びリライト設定
Nginxでリダイレクト(http->https)及びリライト設定

Nginxでhttpアクセス時にhttpsリダイレクトさせたい。それとは別に「h ...

AlmaLinux8系にNginxを導入しPodmanコンテナに接続する方法
AlmaLinux8系にNginxを導入しPodmanコンテナに接続する方法

AlmaLinux8でホスト側はApacheからPodmanコンテナ環境に接続し ...

CentOS7系にLEMP環境(Linux + Nginx + MySQL + PHP)を構築
CentOS7系にLEMP環境(Linux + Nginx + MySQL + PHP)を構築

先日KAGOYAのVPSからIndigoに移行した際にCentOS6から7へバー ...