server_name regexp

Anton Koldaev koldaevav на gmail.com
Пн Сен 20 11:23:57 MSD 2010


Только $host вместо $server_name в fastcgi_param всё равно приходится
использовать там где "server_name  _;".
Это корректно?

2010/9/20 Anton Koldaev <koldaevav на gmail.com>

> Благодарю. Таки воспользовался советом.
>
>
> 2010/9/20 Igor Sysoev <igor на sysoev.ru>
>
>> On Mon, Sep 20, 2010 at 10:47:13AM +0400, Anton Koldaev wrote:
>>
>> > Не хочется иметь длинную простыню с аналогичными конфигами. Тем более,
>> если
>> > в server-е множество локейшенов, то ведь всю простыню придется повторять
>> в
>> > каждом из server {}.
>>
>> Ну так всё равно можно применять прямую логику:
>>
>> server {
>>    server_name  one.sitename.ru
>>                  two.sitename.ru
>>                 three.sitename.ru
>>                  www.sitename.ru
>>                 ;
>>    ...
>> }
>>
>> server {
>>    listen  80 default_server
>>    server_name  _;
>>     ...
>> }
>>
>> > Обошел проблему выставив $host вместо $server_name:
>> >
>> > fastcgi_param SERVER_NAME $host;
>> > >
>> >
>> > 2010/9/20 Igor Sysoev <igor на sysoev.ru>
>> >
>> > > On Mon, Sep 20, 2010 at 09:51:36AM +0400, Anton Koldaev wrote:
>> > >
>> > > > Привет
>> > > > Имею вот такой server_name:
>> > > >
>> > > > > # Любой поддомен, кроме исключенных
>> > > > >   server_name ~(?<!^one|^two|^three|^www)\.sitename\.ru$;
>> > > > >
>> > > >
>> > > > php-файлы проксируются на php-fpm:
>> > > >
>> > > > >   location ~ \.(php|php4|php5|phtml)$ {
>> > > > >     fastcgi_pass 127.0.0.1:9000;
>> > > > >     try_files $fastcgi_script_name =404;
>> > > > >
>> > > > >     fastcgi_param SERVER_NAME $server_name;
>> > > > >
>> > > > ...
>> > > > >
>> > > >
>> > > > Проблема в том, что в SERVER_NAME попадает именно регексп, а не,
>> > > например,
>> > > > one.sitename.ru.
>> > > > Реврайт, после которого фейлится:
>> > > >
>> > > > > 2010/09/20 09:42:20 [notice] 19176#0: *24 rewritten data:
>> > > > > "/urlrewriteprepend.php", args: "logout=yes&CODE=alozovaya",
>> client:
>> > > > > 94.198.48.35, server: ~(?<!^one|^two|^three|^www)\.sitename\.ru$,
>> > > request:
>> > > > > "GET /blogs/one/index.php?logout=yes&CODE=one HTTP/1.1", host: "
>> > > > > one.sitename.ru", referrer: "http://one.sitename.ru/"
>> > > > >
>> > > >
>> > > > Что отдается в браузере:
>> > > >
>> > > > > Server not found
>> > > > > Firefox can't find the server at ~(.
>> > > > >
>> > > >
>> > > > В адресной строке:
>> > > >
>> > > > > http://
>> > > > >
>> ~%28/?%3C!^one|^two|^three|^www%29\.sitename\.ru$/?logout=yes&CODE=one
>> > > > >
>> > > >
>> > > > Как через fastcgi_param передать верный servername?
>> > >
>> > >     fastcgi_param SERVER_NAME $host;
>> > >
>> > > А зачем использовать инверсную логику - любой поддомен, кроме
>> чего-то-там.
>> > > Неужели не проще (легко читается, не правда ли ?) использовать прямую
>> > > логику:
>> > >
>> > > server {
>> > >    server_name  one.sitename.ru;
>> > > }
>> > >
>> > > server {
>> > >    server_name  two.sitename.ru;
>> > > }
>> > >
>> > > server {
>> > >    server_name  three.sitename.ru;
>> > > }
>> > >
>> > > server {
>> > >    server_name  www.sitename.ru;
>> > > }
>> > >
>> > > server {
>> > >    listen 80 default_server;
>> > >    server_name  _;
>> > > }
>> > >
>> > >
>> > >
>> > > --
>> > > Игорь Сысоев
>> > > http://sysoev.ru
>> > >
>> > > _______________________________________________
>> > > nginx-ru mailing list
>> > > nginx-ru на nginx.org
>> > > http://nginx.org/mailman/listinfo/nginx-ru
>> > >
>> >
>> >
>> >
>> > --
>> > Best regards,
>> > Koldaev Anton
>>
>> > _______________________________________________
>> > nginx-ru mailing list
>> > nginx-ru на nginx.org
>> > http://nginx.org/mailman/listinfo/nginx-ru
>>
>>
>> --
>> Игорь Сысоев
>> http://sysoev.ru
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> Best regards,
> Koldaev Anton
>



-- 
Best regards,
Koldaev Anton
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100920/311713e3/attachment.html>


Подробная информация о списке рассылки nginx-ru