Как ограничить доступ с одного IP-адреса на HTTP-хост в nginx?

Как ограничить доступ с одного IP-адреса на HTTP-хост в nginx?

У меня есть сервер с несколькими веб-сайтами, каждый из которых имеет свой собственный хост.

Есть ли в nginx способ заблокировать 0.0.0.0/0и разрешить доступ к определенному IP-адресу, скажем, 1.2.3.4/32к определенному веб-сайту (определенному имени хоста/домена)?

Например:

  • Если HTTP-запрос приходит с заголовком хоста, www.something-public.comразрешите все.
  • Если HTTP-запрос содержит заголовок хоста, www.something-private.comзапретите все и разрешите определенный IP-адрес.

Еще одна проблема, с которой я столкнулся, заключается в том, что владельцы веб-сайта не являются доверенными, и я хочу ограничить их с помощью этого правила, не позволяя им изменять его через файлы конфигурации в каталогах веб-сайта (например, .htaccessфайлы, которые переопределяют настройки родительского каталога).

решение1

Модульngx_http_access_moduleимеет команды разрешения и запрета, которые вы можете поместить в блоки сервера.

server {
  server_name www.something-public.com;
  allow all; // I think this is the default and the statement is not needed
}

server {
  server_name www.something-private.com;
  allow 192.168.1.1/32;
  deny  all;
}

Связанный контент