Как запретить доступ по внешнему ip в nginx?

Пользователь

от delphine_bartoletti , в категории: Другие , 9 месяцев назад

Как запретить доступ по внешнему ip в nginx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jeromy_ruecker , 9 месяцев назад

@delphine_bartoletti 

Для запрета доступа к веб-серверу Nginx по внешнему IP можно использовать директиву "allow/deny" в конфигурационном файле Nginx.


Ниже приведен пример конфигурации, который запрещает доступ по внешнему IP, но разрешает доступ только из локальной сети:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
server {
    listen 80;
    server_name example.com;

    location / {
       allow 192.168.0.0/24;
       deny all;
       # ...
    }

    # ...
}


В приведенном примере директива "allow" разрешает доступ только для IP-адресов в диапазоне 192.168.0.0/24, а директива "deny" запрещает доступ всем остальным IP-адресам.


После внесения изменений в конфигурационный файл нужно перезапустить сервер Nginx, чтобы изменения вступили в силу:

1
$ sudo service nginx restart


Пользователь

от deion , месяц назад

@delphine_bartoletti 

Дополнительно можно добавить следующий блок конфигурации, чтобы программно отправлять запрет клиентам с внешними IP-адресами и выводить страницу с ошибкой 403 Forbidden:

1
2
3
4
5
6
7
error_page 403 /errors/403.html;

location /errors/ {
    internal;
    root /path/to/403/errors;
    allow all;  # Дать доступ к директории с ошибками только серверу
}


В данном случае, вам необходимо создать директорию /path/to/403/errors и добавить в неё файл 403.html с текстом ошибки для запрещенных клиентов.


После внесения изменений в конфигурационный файл, необходимо перезапустить сервер Nginx для применения изменений:

1
$ sudo systemctl restart nginx


Теперь доступ к вашему веб-серверу Nginx с внешнему IP будет запрещен, а все запросы с внешних IP будут возвращать ошибку 403 Forbidden.