nginx: Заглушка на сайте для определенных IP адресов
- Recluse
- 22.12.2014
- 7 531
- 0
- 18.03.2019
- 1
- 1
- 0
- Содержание статьи
Разработка бывшего сотрудника Рамблер - веб-сервер nginx, уже долгое время является одним из самых популярных продуктов в своей нише. Одной из особенностей данного веб-сервера является очень простой синтаксис файлов конфигурации, и в этой статье будет рассказано о том, как можно просто сделать заглушку на своем сайте для определнных IP адресов.
Делаем заглушку на nginx
Допустим захотели вы вывести страницу с сообщением о блокировке определенному ip адресу или просто решили повесить заглушку о проводимых технических работах на сайте. Сделать это можно следующим образом:
1. Открываем файл конфигурации вашего сайта. В Debian/Ubuntu они лежат в папке /etc/nginx/sites-enabled.
2. Добавляем в самый верх конфига:
geo $block {
default yes;
1.2.3.4/32 no;
}
Данный кусок конфигурации устанавливает по умолчанию значение переменной $block в "yes", и устанавливает значение "no" для ип адреса 1.2.3.4.
3. Ищем в конфиге строчку начинающуюся с "location / {" и вносим туда небольшие дополнения:
location / {
if ($block = yes) {
set $action close;
}
if ($action = close) {
return 503;
}
Здесь идет проверка - если для клиента, который обратился к нашему веб-серверу значение $block равно yes (а это в свою очередь устанавливается в пункте 2), то значение переменной $action будет равно close. В свою очередь, если переменная $action равна close, то сервер возратит клиенту ошибку 503 ("сервис недоступен").
4. В конце конфига, перед последней закрывающей скобкой } добавляем:
error_page 500 502 503 504 /block.html;
location = /block.html {
root /var/www;
}
Вместо block.html следует указать название вашего файла, который должен отображаться пользователю, который будет получать ошибку 503. /var/www следует заменить директорией, в которой находится html файл с заглушкой.
Добавить комментарий