У меня есть сервер с несколькими веб-сайтами, каждый из которых имеет свой собственный хост.
Есть ли в 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;
}