Проблема в том, что если в нижеприведённой конфигурации придёт запрос
на 192.168.1.2:80 без имени хоста, то nignx сделает редирект на
http://mail.*/...
server {
listen 192.168.1.1:80;
server_name example.com;
}
server {
listen 192.168.1.1:80;
listen 192.168.1.2:80;
server_name mail.*;
}
Я, может, плохо выспался - не пойму, почему будет редирект? Точнее,
зачем он тут такой неявный? По-моему, если он нужен мне, я его укажу
явно. А если не нужен - подходящий server{} уже найден, обработать его
как все остальные. Или я не о том?
Так а почему он будет вообще? Ну, я подозреваю, без краткого экскурса в
nginx internals тут сложно будет что-то объяснить - если нет времани,
или желания - не надо. Достаточно мне будет понять, чем принципиально
отличается обработка server_name с шаблоном и без него, и чем
принципиально отличается "mail.*" от "_" (оба имени несуществующие - в
этом смысле).