NGINX позволяет вам размещать несколько веб-сайтов, доменов и поддоменов на одном сервере с помощью виртуальных хостов. Когда ваш сервер получает входящие запросы, он проверяет имя хоста в запросе на соответствие любому из виртуальных хостов и направляет запрос на соответствующий виртуальный хост. Но иногда, несмотря на создание конфигураций для разных доменов, вы можете получать запросы, содержащие ваш IP-адрес или какой-то другой домен, связанный с вашим IP-адресом. В таких случаях рекомендуется добавить виртуальный узел catch all, который будет принимать и обрабатывать все подобные запросы. В этой статье мы узнаем, как настроить NGINX на перехват всех необработанных виртуальных хостов.
Настройка NGINX на перехват всех необработанных виртуальных хостов
Вы можете настроить перехват всех виртуальных хостов с помощью директивы 'server_name _' вместе с использованием default_server в директиве listen, как показано ниже. Ниже приведен пример перехвата всех виртуальных хостов, прослушивающих порты 80 (HTTP) и 443 (HTTPS).
1 2 3 4 5 6 7 8 9 10 11 12 13 | server { server_name _; listen 80 default_server; listen 443 ssl default_server; ssl_certificate ; ssl_certificate_key ; root /var/www/default; (or wherever) } |
В приведенном выше серверном блоке мы используем директиву server_name. Вместо того чтобы установить ее на доменное имя любого из виртуальных хостов, мы устанавливаем ее на '_'.
Далее, в директиве listen для портов 80 и 443 мы используем default_server. Эти две настройки гарантируют, что любой запрос, отправленный на ваш сервер, будет обработан, даже если имя хоста не совпадает ни с одним из виртуальных хостов, настроенных на вашем сервере.
Мы добавили директиву listen для портов 80 и 443, чтобы обрабатывать как HTTP, так и HTTPS запросы. Если вы хотите обрабатывать только HTTP-запросы, вы можете пропустить запрос listen для порта 443.
Обратите внимание, если вы прослушиваете порт 443, вам также необходимо указать путь к SSL сертификатам с помощью директив ssl_certificate и ssl_certificate_key.
В этой статье мы узнали, как перехватить все необработанные виртуальные хосты в NGINX.