server_name regexp

Anton Koldaev koldaevav на gmail.com
Пн Сен 20 10:47:13 MSD 2010


Не хочется иметь длинную простыню с аналогичными конфигами. Тем более, если
в server-е множество локейшенов, то ведь всю простыню придется повторять в
каждом из server {}.
Обошел проблему выставив $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
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100920/dfdf4ed9/attachment.html>


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