Nginx deny all и Nginx deny ip — директивы, позволяющие запретить доступ к сайту на уровне веб-сервера. Может указываться как определенный адрес, так и подсеть. Любой клиент с адресом, попадающим в диапазон, для которого выставлен запрет, будет получать ошибку 403.
Прежде всего нужно убедиться в том, что на портах 80 и 443 на сервере работает Nginx, для этого можно использовать утилиту netstat
Можно задать ограничение в целом для веб-сервера в 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 нужно разместить в корне сайта.
В логах веб-сервера можно будет увидеть сообщения с кодом ответа 403:
Содержимое может быть любым. Чаще всего имеет смысл выводить на ней сообщение о том, что доступ запрещен или показывать стандартную страницу Niginx, которая открывается при обращении по IP адресу.
Указав директиву Nginx deny all можно полностью закрыть доступ к сайту. В Nginx такие директивы прописываются если Apache не используется или если его конфигурация не позволяет задавать ограничения в файле .htaccess.