nginx: Заглушка на сайте для определенных IP адресов

  • 22.12.2014
  • 7 531
  • 0
  • 18.03.2019
  • 1
  • 1
  • 0
nginx: Заглушка на сайте для определенных IP адресов

Разработка бывшего сотрудника Рамблер - веб-сервер 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 файл с заглушкой.

Была ли эта статья Вам полезна?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.