Я использую nginx для обслуживания своего сайта. Я хочу заблокировать все запросы, которые поступают с HTTP-заголовком Host, который не соответствует домену моего сайта.
Чтобы быть более конкретным, мой nginx.conf содержит эти два серверных блока:
server {
# Redirect from the old domain to the new domain; also redirect
# from www.newdomain.com to newdomain.com without the "www"
server_name www.olddomain.com olddomain.com www.newdomain.com;
listen 80;
return 301 $scheme://newdomain.com$request_uri;
}
server {
server_name newdomain.com localhost;
listen 80;
# Actual configuration goes here...
}
Я хочу заблокировать (т. Е. «Вернуть» код статуса 444) любой трафик, хост которого не является www.olddomain.com, olddomain.com, www.newdomain.com или newdomain.com. Как я могу это сделать?
если вы явно не определяете сервер по умолчанию, nginx будет неявно использовать первый найденный сервер. так что просто создайте серверный блок для блокировки неизвестных хостов:
server {
listen 80 default_server;
return 444;
}
(нет необходимости добавлять server_name - оно никогда не совпадет).