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

Как мне отказать в запросе субдомена в Nginx

Если моя конфигурация выглядит примерно так

server {
  listen 80;
  server_name example.com;
}

как отклонить запросы к subdomain.example.com?

server {
    listen 80;
    server_name subdomain.example.com;
    deny all;
}

Или, если вы хотите отбросить весь трафик, не связанный с доменом, явно определенным в другом server блок в вашей конфигурации:

server {
    listen 80 default_server;
    server_name _;
    deny all;
}

Ответ Шейна Мэддена будет работать, или вы также можете использовать нестандартный код ответа 444, который убьет соединение без отправки каких-либо заголовков (источник: http://wiki.nginx.org/HttpRewriteModule)

Чтобы заблокировать определенные поддомены:

server {
    server_name subdomain.example.com;
        return 444;
}

Или заблокировать все поддомены или домены, которые не обрабатываются где-либо еще:

server {
    server_name _;
    return 444;
}

Последний вариант полезен при блокировке доменов, которые дублируют ваш контент и, таким образом, могут повредить вашему рейтингу в поисковых системах. (Это исходит из личного опыта.)

Если у вашего поддомена есть трафик, лучше перенаправить все запросы с поддомена на домен, как это

        if ($http_host != "example.com") {
            rewrite ^ http://example.com$request_uri permanent;
    }

в разделе сервера

Это оптимизировано для SEO.