Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: server_name bug
On Wednesday, October 29, 2008 at 15:59:23, MZ wrote:
M> Можете считать мене непрофессионалом, но я ожидаю что веб-сервер
M> который заявляет что *:80 будет матчить запросы для указанного
M> server_name для всех ипов будет действительно их матчить,
M> а не игнорировать после добавления нового виртхоста.
алгоритм работы у listen такой же как и у server_name - сначала
ищется полное соответствие, и если его нет, тогда проверяется *.
M> И лично я не вижу никаких причин почему запрос пришедший
M> не в wildcard-сокет должен игнорировать виртхосты с *:80,
M> если отвлечься от того, как устроены сокеты.
потому что кроме name-based virtual-host`ов есть еще и ip-based.
и для них поле заголовка "Host:" - вообще должно игнорироваться.
поскольку явной директивы для разделения виртуальных хостов
на ip-based и name-based в nginx нет, остается только listen.
M> Все-таки дело имеется с http-запросами, в которых кроме всякого
M> присутствуют и заголовки, такие как Host: . Так что теперь,
M> раз у нас есть сокеты то наплевать на http-протокол ?
http-протоколы бывают разные. в версии 0.9 поля Host: вообще нет.
поэтому не надо чинить то, что не сломалось и нормально работает.
M> Кто-нибудь сможет привести реальный пример
M> когда требуется именно такое поведение как сейчас?
сейчас директива listen *:port означает "все остальные ip:port,
кроме явно определенных в других директивах server", и это имеет
смысл и дает возможность для маневра, когда часть ip - динамические.
если сделать предлагаемые изменения, тогда listen *:port
превращается в syntactic sugar, обычную макроподстановку,
и внутренне будет замещаться на список всех ip адресов.
если конфиг nginx стал таким большим и сложным, что приходится
тратить много времени и сил на поддержание его в актуальном состоянии,
--
Best regards,
Gena
|