server_name bug
Igor Sysoev
is at rambler-co.ru
Tue Oct 21 22:40:28 MSD 2008
On Tue, Oct 21, 2008 at 09:27:40PM +0300, MZ wrote:
> Обнаружил такой баг
> server {
> listen *:80;
> server_name example.org;
> }
> server {
> listen 1.2.3.4:80;
> server_name default;
> }
>
> запрос на 1.2.3.4 с Host: example.org попадает не в первый vhost а во
> второй
>
> nginx 0.6.31
Это не баг. Сначала проверяются адрес:порт, а только потом имя.
Поскольку listen 1.2.3.4:80 описан явно, то, с точки зрения nginx'а,
сервер, в котором он описан, является единственным приёмником таких запросов.
Особенно хорошо это видно, если поставить
listen 1.2.3.4:80 default bind;
Тогда соединение в принципе не попадёт в *:80. Так устроены сокеты.
Если на 1.2.3.4:80 ожидаются запросы для example.org, то нужно такое:
server {
listen *:80;
listen 1.2.3.4:80;
server_name example.org;
}
server {
listen 1.2.3.4:80;
server_name default;
}
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list