Как настроить в Nginx запрет доступа к сайту по определенному IP-адресу?

Как настроить NGINX так, чтобы пользователи не могли получить доступ к веб-приложению, используя прямой IP-адрес и порт x.x.x.x:4000?
  • 22 ноября 2023 г. 1:19
Ответы на вопрос 3
Для запрета доступа к сайту по определенному IP-адресу в Nginx можно использовать директиву `deny`. Вот пример конфигурации:

```nginx
server {
    listen 80;
    server_name example.com;
    
    location / {
        # Запрет доступа для IP-адреса 192.168.0.1
        deny 192.168.0.1;
        # Доступ для остальных IP-адресов
        allow all;
        # Убедитесь, что deny директива находится перед allow
        # этот порядок важен для корректной работы
    }
}
```

В этом примере, доступ к сайту будет предоставляться всем пользователям, кроме `192.168.0.1`. Замените `deny 192.168.0.1;` на нужный вам IP-адрес или диапазон IP-адресов, чтобы запретить доступ.

Если веб-приложение находится на порту `4000`, вы можете добавить отдельный блок конфигурации для этого порта и применить ту же директиву `deny`. 

```nginx
server {
    listen 4000;
    server_name example.com;
    
    location / {
        deny 192.168.0.1;
        allow all;
    }
}
```

Здесь также пользователи с IP-адресом `192.168.0.1` не смогут получить доступ к веб-приложению через прямой IP-адрес и порт `x.x.x.x:4000`.
Включить на сервере фаервол и разрешить доступ только через определенные порты снаружи. Например, можно оставить открытыми порты 80 (для публикации веб-сервера) и 22 (для подключения по SSH). 
 Ограничить прослушивание определенного порта только для локального хоста, а не для всех адресов (0.0.0.0).
Похожие вопросы