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 на пачку других, как сейчас.
ЗЫ: Прошу прощения за резкий тон, не стоит это считать за попытку
нанести оскорбление. Рассчитываю на взаимопонимание и конструктивный
диалог.
|