Вчера многие обратили внимание на конструкцию в Nginx:
server_name _;
Что это, блядь, за «чёрточка» вместо сервернейма?
Если техническим языком — это подстановочное имя хоста.
Пусть на сервере прописано так:
server {
listen 80;
server_name _;
return 444;
}
server {
listen 80;
server_name bashdays.ru;
return 200;
}
server {
listen 80;
server_name linuxfactory.ru;
return 200;
}
Если в браузере откроем bashdays.ru или linuxfactory.ru, то получим статус 200.
А как получить 444, тот самый с «чёрточкой»?
Просто! Например, зайти на сервер по его IP-адресу. Nginx не сможет сопоставить доменные имена, которые прописаны в конфиге, и отдаст статус 444.
То есть «чёрточка» — это что-то типа заглушки. Nginx не воспринимает её как специальный символ, это обычное имя хоста, которое можно использовать для обработки запросов, не соответствующих другим явно указанным доменам.
Обычно эту «чёрточку» прописывают в файле defaults, чтобы тот, кто попал на сервер по IP-адресу, увидел то, что ты захочешь, а не рандомный сайт, который у тебя висит на сервере.
server_name, то он будет обрабатываться этим серверным блоком.А в сочетании с return 444 (No Response) используется для закрытия нежелательных запросов или для обработки некорректных запросов.
Если «чёрточка» не используется, то вместо неё можно просто прописать default_server в директиве listen, и блок будет работать аналогично.
server {
listen 80 default_server;
return 444;
}
Вот так вот и живём, изучай!








Комментарии