Re: [proposal] SERVER_NAME в fastcgi_params
Все же понимают, что отсутствующий server_name - это просто способ "упрощения" минимально необходимого конфига и на самом деле имя сервера все равно присутствует (дефолтное значение - пустая строка). Что именно попадет в этом случае в SERVER_NAME - не совсем понятно. Но исходя из всей вышеописанной логики - туда должна попасть пустая строка. пн, 13 мар. 2023 г. в 14:09, Илья Шипицин : > и да и нет. > в конфиге сервера, приведенным топикстартером server_name отсутствует, а > запрос смаршрутизировался, потому что указан default_server в listen. > > а как интерпретировать MUST в случае отсутствующего server_name RFC не > говорит )) > > пн, 13 мар. 2023 г. в 11:53, Maksim Kulik : > >> В RFC на эту тему есть вполне четкое мнение: >> >>The SERVER_NAME variable MUST be set to the name of the server host >>to which the client request is directed. >> >> Там должно быть имя сервера, который обслуживает этот запрос. Из >> документации nginx: Первое имя становится основным именем сервера. Всё >> вполне однозначно при внимательном прочтении. >> >> пн, 13 мар. 2023 г. в 13:50, Илья Шипицин : >> >>> >>> >>> пн, 13 мар. 2023 г. в 11:12, Nikolay Shaplov : >>> В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья Шипицин написал: > > A deployed server can have more than one possible value for this > > variable, where several HTTP virtual hosts share the same IP address. > > In that case, the server would use the contents of the request's Host > > header field to select the correct virtual host. > > > > Мой вольный перевод "В случае если есть несколько кандидатов на заполнение > > переменной окружения SERVER_NAME, например несколько виртальных хостов > > использует один и тот же IP-адрес, серверу следует изучить содержимое > > заголовка Host пришедшего в http-запросе и использовать его значение для > > того > > чтобы выбрать корректный virtual host" > > все верно. но это про другое же речь. > в цитируемом фрагменте речь про то, что если у вас несколько виртуальных > хостов, но выбрать правильный можно и нужно исходя из Host. > > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже > сделали. хорошо, давайте совсем на примерах. В конфиге написано: server_name h1.example.com h2.example.com h3.example.com; includefastcgi_params; fastcgi_pass unix:/var/run/my-fastcgi; Я браузером захожу на h2.example.com Что должно оказаться в SERVER_NAME для cgi-скрипта который будет отвечать на этот запрос? >>> >>> процитированный Вами фрагмент RFC говорит, что, если у вас есть >>> несколько блоков server { ... }, то >>> выбрать надо данный конкретный, потому что в server_name у него >>> присутствует h2.example.com >>> >>> а что писать в SERVER_NAME для cgi-скрипта - тут нет четкого мнения, >>> скажем так, могут быть варианты. >>> >>> -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su >>> ___ >>> nginx-ru mailing list >>> nginx-ru@nginx.org >>> https://mailman.nginx.org/mailman/listinfo/nginx-ru >>> >> ___ >> nginx-ru mailing list >> nginx-ru@nginx.org >> https://mailman.nginx.org/mailman/listinfo/nginx-ru >> > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
и да и нет. в конфиге сервера, приведенным топикстартером server_name отсутствует, а запрос смаршрутизировался, потому что указан default_server в listen. а как интерпретировать MUST в случае отсутствующего server_name RFC не говорит )) пн, 13 мар. 2023 г. в 11:53, Maksim Kulik : > В RFC на эту тему есть вполне четкое мнение: > >The SERVER_NAME variable MUST be set to the name of the server host >to which the client request is directed. > > Там должно быть имя сервера, который обслуживает этот запрос. Из > документации nginx: Первое имя становится основным именем сервера. Всё > вполне однозначно при внимательном прочтении. > > пн, 13 мар. 2023 г. в 13:50, Илья Шипицин : > >> >> >> пн, 13 мар. 2023 г. в 11:12, Nikolay Shaplov : >> >>> В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья >>> Шипицин написал: >>> > > A deployed server can have more than one possible value for this >>> > > variable, where several HTTP virtual hosts share the same IP address. >>> > > In that case, the server would use the contents of the request's Host >>> > > header field to select the correct virtual host. >>> > > >>> > > Мой вольный перевод "В случае если есть несколько кандидатов на >>> заполнение >>> > > переменной окружения SERVER_NAME, например несколько виртальных >>> хостов >>> > > использует один и тот же IP-адрес, серверу следует изучить содержимое >>> > > заголовка Host пришедшего в http-запросе и использовать его значение >>> для >>> > > того >>> > > чтобы выбрать корректный virtual host" >>> > >>> > все верно. но это про другое же речь. >>> > в цитируемом фрагменте речь про то, что если у вас несколько >>> виртуальных >>> > хостов, но выбрать правильный можно и нужно исходя из Host. >>> > >>> > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже >>> > сделали. >>> >>> хорошо, давайте совсем на примерах. >>> В конфиге написано: >>> >>> server_name h1.example.com h2.example.com h3.example.com; >>> includefastcgi_params; >>> fastcgi_pass unix:/var/run/my-fastcgi; >>> >>> Я браузером захожу на h2.example.com >>> >>> Что должно оказаться в SERVER_NAME для cgi-скрипта который будет >>> отвечать на >>> этот запрос? >>> >> >> процитированный Вами фрагмент RFC говорит, что, если у вас есть несколько >> блоков server { ... }, то >> выбрать надо данный конкретный, потому что в server_name у него >> присутствует h2.example.com >> >> а что писать в SERVER_NAME для cgi-скрипта - тут нет четкого мнения, >> скажем так, могут быть варианты. >> >> >>> >>> -- >>> Nikolay Shaplov aka Nataraj >>> Fuzzing Engineer at Postgres Professional >>> Matrix IM: @dhyan:nataraj.su >>> >> ___ >> nginx-ru mailing list >> nginx-ru@nginx.org >> https://mailman.nginx.org/mailman/listinfo/nginx-ru >> > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В RFC на эту тему есть вполне четкое мнение: The SERVER_NAME variable MUST be set to the name of the server host to which the client request is directed. Там должно быть имя сервера, который обслуживает этот запрос. Из документации nginx: Первое имя становится основным именем сервера. Всё вполне однозначно при внимательном прочтении. пн, 13 мар. 2023 г. в 13:50, Илья Шипицин : > > > пн, 13 мар. 2023 г. в 11:12, Nikolay Shaplov : > >> В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья >> Шипицин написал: >> > > A deployed server can have more than one possible value for this >> > > variable, where several HTTP virtual hosts share the same IP address. >> > > In that case, the server would use the contents of the request's Host >> > > header field to select the correct virtual host. >> > > >> > > Мой вольный перевод "В случае если есть несколько кандидатов на >> заполнение >> > > переменной окружения SERVER_NAME, например несколько виртальных хостов >> > > использует один и тот же IP-адрес, серверу следует изучить содержимое >> > > заголовка Host пришедшего в http-запросе и использовать его значение >> для >> > > того >> > > чтобы выбрать корректный virtual host" >> > >> > все верно. но это про другое же речь. >> > в цитируемом фрагменте речь про то, что если у вас несколько виртуальных >> > хостов, но выбрать правильный можно и нужно исходя из Host. >> > >> > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже >> > сделали. >> >> хорошо, давайте совсем на примерах. >> В конфиге написано: >> >> server_name h1.example.com h2.example.com h3.example.com; >> includefastcgi_params; >> fastcgi_pass unix:/var/run/my-fastcgi; >> >> Я браузером захожу на h2.example.com >> >> Что должно оказаться в SERVER_NAME для cgi-скрипта который будет отвечать >> на >> этот запрос? >> > > процитированный Вами фрагмент RFC говорит, что, если у вас есть несколько > блоков server { ... }, то > выбрать надо данный конкретный, потому что в server_name у него > присутствует h2.example.com > > а что писать в SERVER_NAME для cgi-скрипта - тут нет четкого мнения, > скажем так, могут быть варианты. > > >> >> -- >> Nikolay Shaplov aka Nataraj >> Fuzzing Engineer at Postgres Professional >> Matrix IM: @dhyan:nataraj.su >> > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
пн, 13 мар. 2023 г. в 11:12, Nikolay Shaplov : > В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья > Шипицин написал: > > > A deployed server can have more than one possible value for this > > > variable, where several HTTP virtual hosts share the same IP address. > > > In that case, the server would use the contents of the request's Host > > > header field to select the correct virtual host. > > > > > > Мой вольный перевод "В случае если есть несколько кандидатов на > заполнение > > > переменной окружения SERVER_NAME, например несколько виртальных хостов > > > использует один и тот же IP-адрес, серверу следует изучить содержимое > > > заголовка Host пришедшего в http-запросе и использовать его значение > для > > > того > > > чтобы выбрать корректный virtual host" > > > > все верно. но это про другое же речь. > > в цитируемом фрагменте речь про то, что если у вас несколько виртуальных > > хостов, но выбрать правильный можно и нужно исходя из Host. > > > > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже > > сделали. > > хорошо, давайте совсем на примерах. > В конфиге написано: > > server_name h1.example.com h2.example.com h3.example.com; > includefastcgi_params; > fastcgi_pass unix:/var/run/my-fastcgi; > > Я браузером захожу на h2.example.com > > Что должно оказаться в SERVER_NAME для cgi-скрипта который будет отвечать > на > этот запрос? > процитированный Вами фрагмент RFC говорит, что, если у вас есть несколько блоков server { ... }, то выбрать надо данный конкретный, потому что в server_name у него присутствует h2.example.com а что писать в SERVER_NAME для cgi-скрипта - тут нет четкого мнения, скажем так, могут быть варианты. > > -- > Nikolay Shaplov aka Nataraj > Fuzzing Engineer at Postgres Professional > Matrix IM: @dhyan:nataraj.su > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Да, т.к. name of the server - это первое имя в директиве server_name. Выше в переписке уже писали, что это упомянуто в документации - http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name Кроме этого, Максим писал про аналоги в веб-сервере Apache - там есть ServerName, в котором описывается только одно имя и ServerAlias, которых может быть много. В приведенном вами примере ServerName - h1.example.com, остальное - алиасы. А алиас никогда не попадает в переменную SERVER_NAME. пн, 13 мар. 2023 г. в 13:21, Nikolay Shaplov : > В письме от понедельник, 13 марта 2023 г. 13:16:25 MSK пользователь Maksim > Kulik написал: > > h1.example.com - это и есть имя сервера, остальное - алиасы. > > Как должен выглядеть конфиг, для случая который описан в RFC > >"A deployed server can have more than one possible value for this >variable, where several HTTP virtual hosts share the same IP address" > ? > > Соответсвует ли упомянутое вам имя сервера формулировке "name of the > server > host to which the client request is directed." ? > > > > > пн, 13 мар. 2023 г. в 13:12, Nikolay Shaplov : > > > > > > > В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь > Илья > > > Шипицин написал: > > > > > > > > A deployed server can have more than one possible value for this > > > > > variable, where several HTTP virtual hosts share the same IP > address. > > > > > In that case, the server would use the contents of the request's > Host > > > > > header field to select the correct virtual host. > > > > > > > > > > > > > > > > > > > > Мой вольный перевод "В случае если есть несколько кандидатов на > > > > > > заполнение > > > > > > > > переменной окружения SERVER_NAME, например несколько виртальных > > > > > хостов > > > > > использует один и тот же IP-адрес, серверу следует изучить > содержимое > > > > > заголовка Host пришедшего в http-запросе и использовать его > значение > > > > > > для > > > > > > > > того > > > > > чтобы выбрать корректный virtual host" > > > > > > > > > > > > > > > > все верно. но это про другое же речь. > > > > в цитируемом фрагменте речь про то, что если у вас несколько > > > > виртуальных > > > > хостов, но выбрать правильный можно и нужно исходя из Host. > > > > > > > > > > > > > > > > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже > > > > сделали. > > > > > > > > > > > > хорошо, давайте совсем на примерах. > > > В конфиге написано: > > > > > > > > > > > > server_name h1.example.com h2.example.com h3.example.com; > > > includefastcgi_params; > > > fastcgi_pass unix:/var/run/my-fastcgi; > > > > > > > > > > > > Я браузером захожу на h2.example.com > > > > > > > > > > > > Что должно оказаться в SERVER_NAME для cgi-скрипта который будет > отвечать > > > на > > > этот запрос? > > > > > > > > > > > > -- > > > Nikolay Shaplov aka Nataraj > > > Fuzzing Engineer at Postgres Professional > > > Matrix IM: @dhyan:nataraj.su > > > ___ > > > nginx-ru mailing list > > > nginx-ru@nginx.org > > > https://mailman.nginx.org/mailman/listinfo/nginx-ru > > > > > > > > > -- > Nikolay Shaplov aka Nataraj > Fuzzing Engineer at Postgres Professional > Matrix IM: @dhyan:nataraj.su > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от понедельник, 13 марта 2023 г. 13:16:25 MSK пользователь Maksim Kulik написал: > h1.example.com - это и есть имя сервера, остальное - алиасы. Как должен выглядеть конфиг, для случая который описан в RFC "A deployed server can have more than one possible value for this variable, where several HTTP virtual hosts share the same IP address" ? Соответсвует ли упомянутое вам имя сервера формулировке "name of the server host to which the client request is directed." ? > > пн, 13 мар. 2023 г. в 13:12, Nikolay Shaplov : > > > > В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья > > Шипицин написал: > > > > > > A deployed server can have more than one possible value for this > > > > variable, where several HTTP virtual hosts share the same IP address. > > > > In that case, the server would use the contents of the request's Host > > > > header field to select the correct virtual host. > > > > > > > > > > > > > > > > Мой вольный перевод "В случае если есть несколько кандидатов на > > > > заполнение > > > > > > переменной окружения SERVER_NAME, например несколько виртальных > > > > хостов > > > > использует один и тот же IP-адрес, серверу следует изучить содержимое > > > > заголовка Host пришедшего в http-запросе и использовать его значение > > > > для > > > > > > того > > > > чтобы выбрать корректный virtual host" > > > > > > > > > > > > все верно. но это про другое же речь. > > > в цитируемом фрагменте речь про то, что если у вас несколько > > > виртуальных > > > хостов, но выбрать правильный можно и нужно исходя из Host. > > > > > > > > > > > > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже > > > сделали. > > > > > > > > хорошо, давайте совсем на примерах. > > В конфиге написано: > > > > > > > > server_name h1.example.com h2.example.com h3.example.com; > > includefastcgi_params; > > fastcgi_pass unix:/var/run/my-fastcgi; > > > > > > > > Я браузером захожу на h2.example.com > > > > > > > > Что должно оказаться в SERVER_NAME для cgi-скрипта который будет отвечать > > на > > этот запрос? > > > > > > > > -- > > Nikolay Shaplov aka Nataraj > > Fuzzing Engineer at Postgres Professional > > Matrix IM: @dhyan:nataraj.su > > ___ > > nginx-ru mailing list > > nginx-ru@nginx.org > > https://mailman.nginx.org/mailman/listinfo/nginx-ru > > > > -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
h1.example.com - это и есть имя сервера, остальное - алиасы. пн, 13 мар. 2023 г. в 13:12, Nikolay Shaplov : > В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья > Шипицин написал: > > > A deployed server can have more than one possible value for this > > > variable, where several HTTP virtual hosts share the same IP address. > > > In that case, the server would use the contents of the request's Host > > > header field to select the correct virtual host. > > > > > > Мой вольный перевод "В случае если есть несколько кандидатов на > заполнение > > > переменной окружения SERVER_NAME, например несколько виртальных хостов > > > использует один и тот же IP-адрес, серверу следует изучить содержимое > > > заголовка Host пришедшего в http-запросе и использовать его значение > для > > > того > > > чтобы выбрать корректный virtual host" > > > > все верно. но это про другое же речь. > > в цитируемом фрагменте речь про то, что если у вас несколько виртуальных > > хостов, но выбрать правильный можно и нужно исходя из Host. > > > > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже > > сделали. > > хорошо, давайте совсем на примерах. > В конфиге написано: > > server_name h1.example.com h2.example.com h3.example.com; > includefastcgi_params; > fastcgi_pass unix:/var/run/my-fastcgi; > > Я браузером захожу на h2.example.com > > Что должно оказаться в SERVER_NAME для cgi-скрипта который будет отвечать > на > этот запрос? > > -- > Nikolay Shaplov aka Nataraj > Fuzzing Engineer at Postgres Professional > Matrix IM: @dhyan:nataraj.su > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от понедельник, 13 марта 2023 г. 12:40:14 MSK пользователь Илья Шипицин написал: > > A deployed server can have more than one possible value for this > > variable, where several HTTP virtual hosts share the same IP address. > > In that case, the server would use the contents of the request's Host > > header field to select the correct virtual host. > > > > Мой вольный перевод "В случае если есть несколько кандидатов на заполнение > > переменной окружения SERVER_NAME, например несколько виртальных хостов > > использует один и тот же IP-адрес, серверу следует изучить содержимое > > заголовка Host пришедшего в http-запросе и использовать его значение для > > того > > чтобы выбрать корректный virtual host" > > все верно. но это про другое же речь. > в цитируемом фрагменте речь про то, что если у вас несколько виртуальных > хостов, но выбрать правильный можно и нужно исходя из Host. > > но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже > сделали. хорошо, давайте совсем на примерах. В конфиге написано: server_name h1.example.com h2.example.com h3.example.com; includefastcgi_params; fastcgi_pass unix:/var/run/my-fastcgi; Я браузером захожу на h2.example.com Что должно оказаться в SERVER_NAME для cgi-скрипта который будет отвечать на этот запрос? -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
пн, 13 мар. 2023 г. в 10:09, Nikolay Shaplov : > В письме от понедельник, 13 марта 2023 г. 10:57:09 MSK пользователь Maksim > Kulik написал: > > А где написано, что сервер ДОЛЖЕН его ИСПОЛЬЗОВАТЬ дальше? Он должен > > использовать это имя для ВЫБОРА виртуал-хоста. Насколько я вижу, в RFC не > > описано дальнейшее поведение сервера при наличии более одного > SERVER_NAME в > > виртуал-хосте. > > Цитирую: > >A deployed server can have more than one possible value for this >variable, where several HTTP virtual hosts share the same IP address. >In that case, the server would use the contents of the request's Host >header field to select the correct virtual host. > > Мой вольный перевод "В случае если есть несколько кандидатов на заполнение > переменной окружения SERVER_NAME, например несколько виртальных хостов > использует один и тот же IP-адрес, серверу следует изучить содержимое > заголовка Host пришедшего в http-запросе и использовать его значение для > того > чтобы выбрать корректный virtual host" > все верно. но это про другое же речь. в цитируемом фрагменте речь про то, что если у вас несколько виртуальных хостов, но выбрать правильный можно и нужно исходя из Host. но если по факту вы попали в дефолт, то выбор, описанный выше, вы уже сделали. > > > > > пн, 13 мар. 2023 г. в 10:50, Nikolay Shaplov : > > > > > > > > > > > > > Правильно. И то имя которое совпало должно попасть в переменную > окружения > > > SERVER_NAME > > > > > > > > > > > > Ну даже если не читать сам текст RFC (а там по-моему предельно ясно все > > > написано), из соображений общий логики, почему в SERVER_NAME попадает > > > первый > > > из алиасов, а не тот на который пришли??? В этом нет вообще никакой > > > логики. > > > > > > > > > > > > > > > > > -- > > > Nikolay Shaplov aka Nataraj > > > Fuzzing Engineer at Postgres Professional > > > Matrix IM: @dhyan:nataraj.su > > > > > > > > > -- > Nikolay Shaplov aka Nataraj > Fuzzing Engineer at Postgres Professional > Matrix IM: @dhyan:nataraj.su > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от понедельник, 13 марта 2023 г. 10:57:09 MSK пользователь Maksim Kulik написал: > А где написано, что сервер ДОЛЖЕН его ИСПОЛЬЗОВАТЬ дальше? Он должен > использовать это имя для ВЫБОРА виртуал-хоста. Насколько я вижу, в RFC не > описано дальнейшее поведение сервера при наличии более одного SERVER_NAME в > виртуал-хосте. Цитирую: A deployed server can have more than one possible value for this variable, where several HTTP virtual hosts share the same IP address. In that case, the server would use the contents of the request's Host header field to select the correct virtual host. Мой вольный перевод "В случае если есть несколько кандидатов на заполнение переменной окружения SERVER_NAME, например несколько виртальных хостов использует один и тот же IP-адрес, серверу следует изучить содержимое заголовка Host пришедшего в http-запросе и использовать его значение для того чтобы выбрать корректный virtual host" > > пн, 13 мар. 2023 г. в 10:50, Nikolay Shaplov : > > > > > > > > Правильно. И то имя которое совпало должно попасть в переменную окружения > > SERVER_NAME > > > > > > > > Ну даже если не читать сам текст RFC (а там по-моему предельно ясно все > > написано), из соображений общий логики, почему в SERVER_NAME попадает > > первый > > из алиасов, а не тот на который пришли??? В этом нет вообще никакой > > логики. > > > > > > > > > > > -- > > Nikolay Shaplov aka Nataraj > > Fuzzing Engineer at Postgres Professional > > Matrix IM: @dhyan:nataraj.su > > > > -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Hello! On Mon, Mar 13, 2023 at 10:50:37AM +0300, Nikolay Shaplov wrote: > В письме от понедельник, 13 марта 2023 г. 10:46:51 MSK пользователь Maksim > Kulik написал: > > Мне кажется, что в RFC речь идет скорее про разные блоки server {}, т.к. > > речь явно про several virtual hosts, а не про several server names. То есть > > веб-сервер вполне корректно по RFC выбирает блок server {} по имени хоста и > > используется главное имя этого блока далее в работе. > > Вы в своем примере имеете один виртуал хост и N имен (алиасов, если хотите) > > в нем, где N может быть бесконечным в случае дефолтного хоста. Ваш сервер и > > выбирает этот самый хост по имени, которое видит в заголовке. > Правильно. И то имя которое совпало должно попасть в переменную окружения > SERVER_NAME > > Ну даже если не читать сам текст RFC (а там по-моему предельно ясно все > написано), из соображений общий логики, почему в SERVER_NAME попадает первый > из алиасов, а не тот на который пришли??? В этом нет вообще никакой логики. Потому что первое из имён, указанных в директиве server_name - каноническое. Это, кстати, явно описано в документации (https://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name): : Первое имя становится основным именем сервера. Разделение на каноническое имя и алиасы - оно ещё из Apache, где имя сервера указывается отдельно, директивой ServerName, а алиасы, соответственно, директивой ServerAlias. В nginx'е всех отличий в этом плане - алиасы задаются с помощью той же директивы server_name. Выбор же между "использовать каноническое имя" или "использовать имя, на которое пришли" - это вопрос, в первую очередь, желаемого поведения. Скажем, мы можем хотеть во всех перенаправлениях / ссылках / текстах использовать каноническое имя, чтобы пользователь получал одно и то же, независимо от того, по какому конкретно имени он пришёл. Например, это может быть важно, чтобы тексты сгенерированных страниц всегда совпадали, и их можно было кэшировать для всех пользователей. Или просто из эстетических соображений. Или наоборот, можем хотеть, чтобы пользователю всегда возвращались ссылки ровно с тем именем, на которое он пришёл, потому что для разных пользователей сайт может быть доступен под разными именами. Что именно нужно в конкретной конфигурации - это решение того, кто пишет конфигурацию nginx'а. В некоторых случаях оно явно вынесено в отдельные директивы (см. упоминавшуюся ранее server_name_in_redirect), в случае же CGI-like бэкендов оно делается неявно с помощью задания переменной SERVER_NAME. -- Maxim Dounin http://mdounin.ru/ ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
On Mon, Mar 13, 2023 at 11:37:47AM +0300, Evgeniy Berdnikov wrote: > On Mon, Mar 13, 2023 at 10:50:37AM +0300, Nikolay Shaplov wrote: > > В письме от понедельник, 13 марта 2023 г. 10:46:51 MSK пользователь Maksim > > Kulik написал: > > > Мне кажется, что в RFC речь идет скорее про разные блоки server {}, т.к. > > > речь явно про several virtual hosts, а не про several server names. То > > > есть > > > веб-сервер вполне корректно по RFC выбирает блок server {} по имени хоста > > > и > > > используется главное имя этого блока далее в работе. > > > Вы в своем примере имеете один виртуал хост и N имен (алиасов, если > > > хотите) > > > в нем, где N может быть бесконечным в случае дефолтного хоста. Ваш сервер > > > и > > > выбирает этот самый хост по имени, которое видит в заголовке. > > Правильно. И то имя которое совпало должно попасть в переменную окружения > > SERVER_NAME > > > > Ну даже если не читать сам текст RFC (а там по-моему предельно ясно все > > написано), из соображений общий логики, почему в SERVER_NAME попадает > > первый > > из алиасов, а не тот на который пришли??? В этом нет вообще никакой логики. > > +1 > > И нужно отметить, что RFC про протокол взаимодействия, он не диктует как > писать конфиги, поэтому там ничего нет "про разные блоки server {}". > RFC связывает параметры запроса HTTP с параметрами CGI. Однако, нет, перечитав ещё несколько раз п.4.1.14 rfc3875, беру свои слова обратно. -- Eugene Berdnikov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
On Mon, Mar 13, 2023 at 10:50:37AM +0300, Nikolay Shaplov wrote: > В письме от понедельник, 13 марта 2023 г. 10:46:51 MSK пользователь Maksim > Kulik написал: > > Мне кажется, что в RFC речь идет скорее про разные блоки server {}, т.к. > > речь явно про several virtual hosts, а не про several server names. То есть > > веб-сервер вполне корректно по RFC выбирает блок server {} по имени хоста и > > используется главное имя этого блока далее в работе. > > Вы в своем примере имеете один виртуал хост и N имен (алиасов, если хотите) > > в нем, где N может быть бесконечным в случае дефолтного хоста. Ваш сервер и > > выбирает этот самый хост по имени, которое видит в заголовке. > Правильно. И то имя которое совпало должно попасть в переменную окружения > SERVER_NAME > > Ну даже если не читать сам текст RFC (а там по-моему предельно ясно все > написано), из соображений общий логики, почему в SERVER_NAME попадает первый > из алиасов, а не тот на который пришли??? В этом нет вообще никакой логики. +1 И нужно отметить, что RFC про протокол взаимодействия, он не диктует как писать конфиги, поэтому там ничего нет "про разные блоки server {}". RFC связывает параметры запроса HTTP с параметрами CGI. -- Eugene Berdnikov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Hello! On Mon, Mar 13, 2023 at 10:33:36AM +0300, Nikolay Shaplov wrote: > В письме от понедельник, 13 марта 2023 г. 10:27:10 MSK пользователь Maxim > Dounin написал: > > Hello! > > > > On Mon, Mar 13, 2023 at 09:20:49AM +0300, Nikolay Shaplov wrote: > > > В письме от понедельник, 13 марта 2023 г. 09:17:17 MSK пользователь Dmitry > > > > > > Ivanov написал: > > > > Вы писали 5 марта 2023 г., 18:41:17: > > > > > При этом в самом конфиге сайта server_name не указан, сервер > > > > > обслуживает > > > > > все доменные имена (фильтрация по имени осуществляется на фронтэнде). > > > > > > > > Видимо, надо потыкать в RFC разработчиков фронта и забыть о "проблеме" > > > > > > Не достаточно. Если перечислить все обслуживаемые доменные имена в > > > server_name, то в SERVER_NAME при подключении дефолтного fastcgi_params > > > попадает первое из них, а не то, на которое пришли. Что явно противоречит > > > RFC. Я вроде об этом уже писал выше по треду. > > > > Не противоречит, на бэкенд отправляется каноническое имя > > виртуального сервера. > >A deployed server can have more than one possible value for this >variable, where several HTTP virtual hosts share the same IP address. >In that case, the server would use the contents of the request's Host >header field to select the correct virtual host. > > Но как? Английским по белому написано ", the server would use the > contents > of the request's Host header field to select the correct virtual host" Так nginx и использует "request's Host header field to select the correct virtual host" (на самом деле там сложнее, подробнее в стандартах HTTP). И в соответствии с этим - ставит SERVER_NAME в каноническое значение имени выбранного виртуального сервера. Нормативного требования использовать значение заголовка Host в переменной SERVER_NAME - в RFC 3875 нет. (И, в общем-то, быть не может, потому что такое требование противоречило бы нормативным требованиям стандарта HTTP, см. выше про "там сложнее".) -- Maxim Dounin http://mdounin.ru/ ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от понедельник, 13 марта 2023 г. 10:46:51 MSK пользователь Maksim Kulik написал: > Мне кажется, что в RFC речь идет скорее про разные блоки server {}, т.к. > речь явно про several virtual hosts, а не про several server names. То есть > веб-сервер вполне корректно по RFC выбирает блок server {} по имени хоста и > используется главное имя этого блока далее в работе. > Вы в своем примере имеете один виртуал хост и N имен (алиасов, если хотите) > в нем, где N может быть бесконечным в случае дефолтного хоста. Ваш сервер и > выбирает этот самый хост по имени, которое видит в заголовке. Правильно. И то имя которое совпало должно попасть в переменную окружения SERVER_NAME Ну даже если не читать сам текст RFC (а там по-моему предельно ясно все написано), из соображений общий логики, почему в SERVER_NAME попадает первый из алиасов, а не тот на который пришли??? В этом нет вообще никакой логики. > > пн, 13 мар. 2023 г. в 10:33, Nikolay Shaplov : > > > > > > > >A deployed server can have more than one possible value for this > >variable, where several HTTP virtual hosts share the same IP address. > >In that case, the server would use the contents of the request's Host > >header field to select the correct virtual host. > > > > > > > > Но как? Английским по белому написано ", the server would use the > > contents > > of the request's Host header field to select the correct virtual host" > > > > > > > > > > -- > > Nikolay Shaplov aka Nataraj > > Fuzzing Engineer at Postgres Professional > > Matrix IM: @dhyan:nataraj.su > > ___ > > nginx-ru mailing list > > nginx-ru@nginx.org > > https://mailman.nginx.org/mailman/listinfo/nginx-ru > > > > -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Мне кажется, что в RFC речь идет скорее про разные блоки server {}, т.к. речь явно про several virtual hosts, а не про several server names. То есть веб-сервер вполне корректно по RFC выбирает блок server {} по имени хоста и используется главное имя этого блока далее в работе. Вы в своем примере имеете один виртуал хост и N имен (алиасов, если хотите) в нем, где N может быть бесконечным в случае дефолтного хоста. Ваш сервер и выбирает этот самый хост по имени, которое видит в заголовке. пн, 13 мар. 2023 г. в 10:33, Nikolay Shaplov : > >A deployed server can have more than one possible value for this >variable, where several HTTP virtual hosts share the same IP address. >In that case, the server would use the contents of the request's Host >header field to select the correct virtual host. > > Но как? Английским по белому написано ", the server would use the > contents > of the request's Host header field to select the correct virtual host" > > > -- > Nikolay Shaplov aka Nataraj > Fuzzing Engineer at Postgres Professional > Matrix IM: @dhyan:nataraj.su > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от понедельник, 13 марта 2023 г. 10:27:10 MSK пользователь Maxim Dounin написал: > Hello! > > On Mon, Mar 13, 2023 at 09:20:49AM +0300, Nikolay Shaplov wrote: > > В письме от понедельник, 13 марта 2023 г. 09:17:17 MSK пользователь Dmitry > > > > Ivanov написал: > > > Вы писали 5 марта 2023 г., 18:41:17: > > > > При этом в самом конфиге сайта server_name не указан, сервер > > > > обслуживает > > > > все доменные имена (фильтрация по имени осуществляется на фронтэнде). > > > > > > Видимо, надо потыкать в RFC разработчиков фронта и забыть о "проблеме" > > > > Не достаточно. Если перечислить все обслуживаемые доменные имена в > > server_name, то в SERVER_NAME при подключении дефолтного fastcgi_params > > попадает первое из них, а не то, на которое пришли. Что явно противоречит > > RFC. Я вроде об этом уже писал выше по треду. > > Не противоречит, на бэкенд отправляется каноническое имя > виртуального сервера. A deployed server can have more than one possible value for this variable, where several HTTP virtual hosts share the same IP address. In that case, the server would use the contents of the request's Host header field to select the correct virtual host. Но как? Английским по белому написано ", the server would use the contents of the request's Host header field to select the correct virtual host" > Хотите, чтобы было по другому - > сконфигурируйте по другому и/или явно опишите виртуальные сервера, > в разных блоках server{}. > > Подробнее про текущее поведение я писал тут: > > https://mailman.nginx.org/pipermail/nginx-ru/2023-March/USR4N4KMUMDT2KKUV4J5 > RJVBOZTSNCFF.html > > Если остались какие-то вопросы - спрашивайте. -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Hello! On Mon, Mar 13, 2023 at 09:20:49AM +0300, Nikolay Shaplov wrote: > В письме от понедельник, 13 марта 2023 г. 09:17:17 MSK пользователь Dmitry > Ivanov написал: > > > Вы писали 5 марта 2023 г., 18:41:17: > > > При этом в самом конфиге сайта server_name не указан, сервер обслуживает > > > все доменные имена (фильтрация по имени осуществляется на фронтэнде). > > > > Видимо, надо потыкать в RFC разработчиков фронта и забыть о "проблеме" > > Не достаточно. Если перечислить все обслуживаемые доменные имена в > server_name, то в SERVER_NAME при подключении дефолтного fastcgi_params > попадает первое из них, а не то, на которое пришли. Что явно противоречит > RFC. > Я вроде об этом уже писал выше по треду. Не противоречит, на бэкенд отправляется каноническое имя виртуального сервера. Хотите, чтобы было по другому - сконфигурируйте по другому и/или явно опишите виртуальные сервера, в разных блоках server{}. Подробнее про текущее поведение я писал тут: https://mailman.nginx.org/pipermail/nginx-ru/2023-March/USR4N4KMUMDT2KKUV4J5RJVBOZTSNCFF.html Если остались какие-то вопросы - спрашивайте. -- Maxim Dounin http://mdounin.ru/ ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от понедельник, 13 марта 2023 г. 09:17:17 MSK пользователь Dmitry Ivanov написал: > Вы писали 5 марта 2023 г., 18:41:17: > > При этом в самом конфиге сайта server_name не указан, сервер обслуживает > > все доменные имена (фильтрация по имени осуществляется на фронтэнде). > > Видимо, надо потыкать в RFC разработчиков фронта и забыть о "проблеме" Не достаточно. Если перечислить все обслуживаемые доменные имена в server_name, то в SERVER_NAME при подключении дефолтного fastcgi_params попадает первое из них, а не то, на которое пришли. Что явно противоречит RFC. Я вроде об этом уже писал выше по треду. -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Здравствуйте, Nikolay. Вы писали 5 марта 2023 г., 18:41:17: > При этом в самом конфиге сайта server_name не указан, сервер обслуживает все > доменные имена (фильтрация по имени осуществляется на фронтэнде). Видимо, надо потыкать в RFC разработчиков фронта и забыть о "проблеме" -- С уважением, Dmitry nginx...@ivanoff.spb.ru ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru