Nginx deny ip и ограничение доступа

Nginx deny all и Nginx deny ip — директивы, позволяющие запретить доступ к сайту на уровне веб-сервера. Может указываться как определенный адрес, так и подсеть. Любой клиент с адресом, попадающим в диапазон, для которого выставлен запрет, будет получать ошибку 403.

 

Nginx deny all, Nginx deny ip — ограничение доступа к сайту

Можно задать ограничение в целом для веб-сервера в nginx.conf, но чаще требуется сделать это для определенного сайта. В этом случае нужен конфигурационный файл виртуального хоста.

 

mcedit /etc/nginx/sites-availible/example.ru

server {

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

deny 123.123.123.0/24;
deny 91.91.91.91;

}

error_page 403 /error403.html;

}

 

(приведен фрагмент конифга для связки Nginx-Apache2, может быть и любая другая конфигурация)

 

Директивой deny запрещается доступ клиенту 91.91.91.91 и клиентам из подсети 123.123.123.0/24.

Чтобы изменения вступили в силу нужно проверить конфигурацию и перезапустить Nginx

nginx -t

nginx -s reload

 

 

Дополнительно указали директиву error_page 403 /403error.html;

 

Этой директивой задается пользовательская страница ошибки 403. Клиенты, которым запрещен доступ не увидят ошибки, а увидят заранее подготовленную для них html страницу необходимого содержания.Страницу с именем 403error.html нужно разместить в корне сайта.

 

Содержимое может быть любым. Чаще всего имеет смысл выводить на ней сообщение о том, что доступ запрещен или показывать стандартную страницу Niginx, которая открывается при обращении по IP адресу.

Указав директиву deny all можно  полностью закрыть доступ к сайту. В Nginx такие директивы прописываются если Apache не используется или если его конфигурация не позволяет задавать ограничения в файле .htaccess.