Если моя конфигурация выглядит примерно так
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.