Что такое Nginx?
Nginx – это веб-сервер, который часто используется в качестве обратного прокси, почтового прокси, балансировщика нагрузки и HTTP-кэша. Он был первоначально выпущен 4 октября 2004 года, и с тех пор он зарекомендовал себя сильным среди веб-сообщества.
Согласно опросу веб-серверов 2016 года, Nginx был вторым по широкому использованию веб-сервером в категории «активных» сайтов. К февралю 2020 года Netcraft оценил, что Nginx обслуживает как минимум 36,48% всех активных сайтов, взятых в рейтинг, что делает его первым по сравнению с Apache, на котором работают 24,51% сайтов.
Как работает Nginx?
Nginx разработан для обеспечения низкого использования памяти и высокой конкурентоспособности. В Интернете каждую секунду делается несколько запросов. Nginx использует технологию параллелизма и событийно-ориентированный подход, при котором каждый запрос обрабатывается с помощью одного потока, а не генерируются новые процессы для каждого запроса, который приходит на его путь.
Некоторые заметные функции, которые можно заметить в Nginx, включают:
- Реверсивный прокси (lit. “reverse proxy”)
- Кэширование HTTP
- Балансировка нагрузки.
- IPv6 (Интернет-протокол версии 6)
- Поддержка FastCGI с кэшированием.
- WebSockets – Веб-сокеты
- Обработка статических файлов, индексных файлов и автоматического индексирования.
Шаги по составлению белого списка IP-адресов в Nginx
1. Открыть конфигурационный файл NGINX.
Запустите следующую команду, если вы используете основной конфигурационный файл NGINX:
$ sudo vi /etc/nginx/nginx.conf
Если вы настроили отдельные виртуальные хосты для своего сайта (например, www.example.com), то откройте его конфигурацию следующей командой:
$ sudo vi /etc/nginx/sites-enabled/example.conf
2. Добавьте IP-адрес в белый список в Nginx.
Например, если вы хотите добавить IP-адрес 34.46.12.32 в белый список для определенного домена или веб-сайта, просто добавьте следующий формат в ваш файл конфигурации.
allow 34.46.12.32;
deny all;
Добавив указанный формат, Nginx запретит все запросы, приходящие из разных IP-адресов, кроме IP-адреса 34.46.12.32.
Как добавить IP-адрес в список разрешённых (whitelist) в Nginx для определенного домена.
Добавьте вышеприведенные строки в любой из блоков http, server или location / как показано ниже.
http{
…
allow 34.46.12.32;
deny all;
…
}
server{
…
allow 34.46.12.32;
deny all;
…
}
location / {
allow 34.46.12.32;
deny all;
}
Как добавить IP адрес в белый список в Nginx для поддомена
Предположим, у вас есть два поддомена (blog.xyz.com и news.xyz.com) со своими файлами конфигурации Nginx в /etc/nginx/sites-enabled/blog.conf and /etc/nginx/sites-enabled/news.conf
Если вы хотите добавить IP в белый список в Nginx для единственного поддомена (blog.xyz.com), то добавьте вышеупомянутые 2 строки в файл blog.conf этого поддомена.
$ sudo vim /etc/nginx/sites-enabled/blog.conf
In the file itself, add the following:
server {
server blog.xyz.com;
allow 34.46.12.32;
deny all;
}
Если вы ищете, как добавить IP-адреса в белый список для обеих субдоменов, то добавьте две строки в файлы blog.conf и news.conf.
Как настроить белый список диапазонов IP в Nginx?
Если вы хотите разрешить диапазон IP-адресов, например, 34.46.12.0 – 34.46.12.255, используйте формат CIDR для вашего диапазона IP-адресов. Это связано с тем, что Nginx принимает только IP-адреса и форматы CIDR.
location / {
allow 34.46.12.0 /35;
deny all;
}
Как добавить IP-адрес в белый список в Nginx для URL
Если вы хотите включить IP-адрес только для одного URL (например, /accounts/login), то добавьте вышеприведенную директиву allow в блоке location для этого URL.
location /accounts/login {
allow 34.46.12.32;
deny all;
}
Как добавить несколько IP-адресов в белый список в Nginx
Если вы хотите разрешить доступ к нескольким IP-адресам в Nginx, просто добавьте следующую информацию, одну для каждого IP.
allow 34.46.12.32;
allow 34.46.12.10;
deny all;
У вас также есть возможность объединить диапазоны IP и CIDR вместе. Вот процесс:
allow 34.46.12.10;
allow 34.46.12.0/35;
deny all;
3. Как перезапустить Nginx
Выполните команду $ sudo nginx –t, чтобы проверить синтаксис вашего обновленного файла конфигурации.
Если вы не встретили ошибок, выполните следующую команду, чтобы перезапустить сервер Nginx:
$ sudo service nginx reload #debian/ubuntu
$ systemctl restart nginx #redhat/centos
Вот и все! Вы теперь знаете всю процедуру добавления IP в белый список на Nginx, его диапазоны IP и как перезапустить Nginx.