server_name bug

MZ zuborg at advancedhosters.com
Thu Oct 30 16:22:30 MSK 2008


В чт, 30/10/2008 в 15:48 +0300, Vladimir Rusinov пишет:
> 
> 
> 
> 
> 2008/10/30 MZ <zuborg at advancedhosters.com>
>         В ср, 29/10/2008 в 21:23 +0200, Gena Makhomed пишет:
>         > M> Кто-нибудь сможет привести реальный пример
>         > M> когда требуется именно такое поведение как сейчас?
>         >
>         > сейчас директива listen *:port означает "все остальные
>         ip:port,
>         > кроме явно определенных в других директивах server", и это
>         имеет
>         > смысл и дает возможность для маневра, когда часть ip -
>         динамические.
>         
>         
>         Так вот, мое предложение состоит в том чтобы выбросить из
>         вашего
>         определения часть "кроме явно определенных в других директивах
>         server".
>         Т.е. будет означать просто "все ip:port".
>         Вы все ещё настаивате на том что сможете привести пример когда
>         такое
>         изменение сделает невозможным определить нужную вам
>         конфигурацию ?
>         Тогда приведите его (пример).
> 
> 
> Пример:
> Есть некий сервер. У него есть некий фиксированый ip (в его локальную
> сеть) и несколько штук динамических (тунели в untrusted сети).
> Нужно чтобы некий ресурс открывался только с этого фиксированного ip,
> и некие ресурсы, которые открывались бы со всех ip.

Что за некий ресурс ? my_internal_site ?
тогда не вижу никаких проблем, вам даже не придется менять конфигурацию

первый виртхост матчит все запросы на ип 1.2.3.4 с Host:
my_internal_site - то есть ресурс открываться будет при коннектах к
этому ип.

коннекты на остальные ипы не матчат первый виртхост никак, потому что
там четко прописан ип, а не *:80 - то есть этот ресурс не будет
открываться при коннектах на другие ипы

остальные ресурсы будут продолжать матчить коннектам на все остальные
ипы - ничего не поломается.

Все вышесказанное мною, разумеется, применяется не к текущему поведению,
а к модифицированному, когда виртхост с "listen *:80" и без "listen
1.2.3.4:80" не игнорируется при коннектах на ип 1.2.3.4 если есть
виртхост с "listen 1.2.3.4:80"

> Вполне реальная ситуация, и через некоторое время такая может
> возникнуть и у меня.
> 
> Сейчас это делается легко, понятно и логично:
> 
> server {
>   listen 1.2.3.4:80;
>   server_name my_internal_site;
> }
> server {
>   listen *:80
>   listen 1.2.3.4:80;
>   server_name my_public_site;
> }
> server {
>   listen *:80
>   listen 1.2.3.4:80;
>   server_name my_public_site2;
> }

Насколько я понимаю, в текущей конфигурации пара директив listen нужна
чтобы публичные сайты открывались при коннектах на внутренний ип 1.2.3.4
При модифицированном поведении достаточно будет обойтись просто одним
"listen *:80"

> -- 
> Vladimir Rusinov
> http://greenmice.info/


More information about the nginx-ru mailing list