[nginx feature request] change server_name default value to ""
Gena Makhomed
gmm на csdoc.com
Вт Июл 20 14:41:10 MSD 2010
On 20.07.2010 8:21, Kruglov Eugenie wrote:
> Если не брать в расчёт субьективизм, что мне интуитивно понятнее
> "server_name $hostname;", то остаётся вопрос с логами: в случае
> незаполненного server_name что будем писать в лог? Если $hostname -
> нелогично. ""? Косяки с анализаторами логов, косяки с читаемостью.
для логов эта проблема решена, вместо "" для пустых и отсутствующих
значений каких-либо полей и в nginx и в apache выводится символ '-'
и для всех таких случаев, где применяется server_name _;
server {
listen 80 default_server;
server_name _;
return 444;
}
что будет в логе, символ '_' или символ '-', - практически нет разницы.
причем, дефолт server_name ""; никому мешать не будет, в частности,
в вышеприведенном примере конфига из официальной документации:
http://nginx.org/en/docs/http/request_processing.html
#how_to_prevent_undefined_server_names
We have chosen the non-existent domain name “_” as the server name [...]
Note that you should set a name for this server, otherwise nginx will
use the hostname.
этот вариант обхода и "выключения" мешающего дефолта
будет не нужен, и можно будет просто написать:
server {
listen 80 default_server;
return 444;
}
и туда будут попадать все запросы на несуществующие сервера
и все запросы у которых отсутствует поле "Host" - что нам и надо.
>>> при написании примеров использования nginx, документации, ... приходится
>>> многократно повторять "server_name _;" для отмены навязчивого дефолта.
>>>
>>> изменить дефолтовое значение server_name на "", что сделает ненужным
>>> хак server_name _; и в результате этого конфиги станут чище и красивее.
>>>
>>> отсутствие директивы server_name подразумевает пустое имя сервера ""
>>> дефолт server_name $hostname; является неожиданным поведением nginx.
>> Предложение мне нравится.
>> У кого-нибудь есть возражения ?
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru