ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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



В ср, 29/10/2008 в 21:23 +0200, Gena Makhomed пишет:
> On Wednesday, October 29, 2008 at 15:59:23, MZ wrote:
> 
> M> Можете считать мене непрофессионалом, но я ожидаю что веб-сервер
> M> который заявляет что *:80 будет матчить запросы для указанного
> M> server_name для всех ипов будет действительно их матчить,
> M> а не игнорировать после добавления нового виртхоста.
> 
> алгоритм работы у listen такой же как и у server_name - сначала
> ищется полное соответствие, и если его нет, тогда проверяется *.

Зачем переводить стрелки на алгоритмы работы listen и server_name ?
Нечего ответить ? Не отвечайте вообще.

> M> И лично я не вижу никаких причин почему запрос пришедший
> M> не в wildcard-сокет должен игнорировать виртхосты с *:80,
> M> если отвлечься от того, как устроены сокеты.
> 
> потому что кроме name-based virtual-host`ов есть еще и ip-based.
> и для них поле заголовка "Host:" - вообще должно игнорироваться.

Может Вы не в курсе, но кроме ip-based виртхостов есть ещё и
name-based ! В которых поле заголовка Host: не! должно игнорироваться.
Специально разработали новый HTTP протокол для этого, потому что на
одних ip-based виртхостах далеко не уедешь.

> поскольку явной директивы для разделения виртуальных хостов
> на ip-based и name-based в nginx нет, остается только listen.

Не хотите использовать name-based виртхосты - не пишите в конф директив
server_name.
Логично ? Логично !
Хотите использовать на одном ипе оба типа виртхостов - поставьте в
ip-based виртхосте параметр default в listen или опишите его первым.
Вам ещё каких-то директив надо для разделения ?

> M> Все-таки дело имеется с http-запросами, в которых кроме всякого
> M> присутствуют и заголовки, такие как Host: . Так что теперь,
> M> раз у нас есть сокеты то наплевать на http-протокол ?
> 
> http-протоколы бывают разные. в версии 0.9 поля Host: вообще нет.
> поэтому не надо чинить то, что не сломалось и нормально работает.

Не надо говорить за всех. Для меня текущее поведение не нормально, и в
этот тред отписалось уже куча людей для которых оно тоже не нормально.

> M> Кто-нибудь сможет привести реальный пример
> M> когда требуется именно такое поведение как сейчас?
> 
> сейчас директива listen *:port означает "все остальные ip:port,
> кроме явно определенных в других директивах server", и это имеет
> смысл и дает возможность для маневра, когда часть ip - динамические.

Так вот, мое предложение состоит в том чтобы выбросить из вашего
определения часть "кроме явно определенных в других директивах server".
Т.е. будет означать просто "все ip:port".
Вы все ещё настаивате на том что сможете привести пример когда такое
изменение сделает невозможным определить нужную вам конфигурацию ?
Тогда приведите его (пример).

> если сделать предлагаемые изменения, тогда listen *:port
> превращается в syntactic sugar, обычную макроподстановку,
> и внутренне будет замещаться на список всех ip адресов.

И ? В чем проблема ?

> если конфиг nginx стал таким большим и сложным, что приходится
> тратить много времени и сил на поддержание его в актуальном состоянии,
Ага, а если не сделать, то искать виртхосты где стояло *:80 и заменять
один listen на пачку других, как сейчас.

ЗЫ: Прошу прощения за резкий тон, не стоит это считать за попытку
нанести оскорбление. Рассчитываю на взаимопонимание и конструктивный
диалог.


 




Copyright © Lexa Software, 1996-2009.