Назад | Перейти на главную страницу

Как я могу заблокировать запросы с неправильным установленным заголовком Host?

Я использую 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 - оно никогда не совпадет).