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

  • 2 258
  • 0
  • 80,00%
  • 5

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



Оценить статью

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
(Голосов: 5, Рейтинг: 4,00 из 5,00)

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

Ваш e-mail не будет опубликован.