Лучший способ создать белый список IP-адресов с помощью nginx

Лучший способ создать белый список IP-адресов с помощью nginx

мы хотим предоставить доступ к серверу обновлений только определенным IP-адресам и использоватьэта конфигурация nginxдо сих пор:

allow 2a03:2267:4e6f:7264:f6f2:6dff:fe49:e4a2;
allow 2a03:2267:4e6f:7264:a2f3:c1ff:fe7a:4bc6;
...
deny all;

Но, похоже, у nginx есть ограничение на количество разрешающих правил — около 250.

Как мы можем увеличить этот лимит, чтобы мы могли настроить здесь больший белый список. Или есть лучший способ достичь этой цели?

решение1

Вы можете использовать a mapдля достижения того же эффекта. Например:

map $remote_addr $deny {
    default 1;
    2a03:2267:4e6f:7264:f6f2:6dff:fe49:e4a2 0;
    2a03:2267:4e6f:7264:a2f3:c1ff:fe7a:4bc6 0;
}
server {
    ...
    if ($deny) { return 403; }
    ...
}

Видетьэтот документдля получения подробной информации иэта осторожностьпри использовании if.

решение2

Поскольку это белый список, основанный на глобальном доступе к серверу, возможно, для этого лучше использовать iptables.

ip6tables -A INPUT -m tcp -p tcp -s 2a03:2267:4e6f:7264:f6f2:6dff:fe49:e4a2 --dport 80 -j ACCEPT
ip6tables -A INPUT -m tcp -p tcp -s 2a03:2267:4e6f:7264:a2f3:c1ff:fe7a:4bc6 --dport 80 -j ACCEPT
ip6tables -A INPUT -m tcp -p tcp --dport 80 -j REJECT

Обязательно заблокируйте IPv4, если он включен.

iptables -A INPUT -m tcp -p tcp --dport 80 -j REJECT

Связанный контент