Что такое default server в Nginx?

«Что такое default server в Nginx?» — вопрос из категории Веб-серверы и балансировка, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Директива default_server в конфигурации Nginx указывает, какой блок server будет обрабатывать входящие HTTP-запросы, если их заголовок Host не совпадает ни с одним из явно объявленных server_name.

Практическое применение:

  • Безопасность: Блокировка запросов с подозрительных или несуществующих доменов.
  • Редирект: Перенаправление трафика на основной, канонический домен.
  • Заглушка: Возврат стандартной ошибки (например, 444 для закрытия соединения).

Пример конфигурации:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _; # Специальное значение для "любой несовпадающий Host"
    return 444; # Nginx немедленно закроет соединение
}

Важные нюансы:

  • Без явного default_server эту роль будет выполнять первый блок server в конфигурации для данного порта.
  • default_server можно назначать отдельно для IPv4 и IPv6, а также для разных портов (например, 80 и 443).