ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: server_name regexp



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

2010/9/20 Anton Koldaev <koldaevav@xxxxxxxxx>
Благодарю. Таки воспользовался советом.


2010/9/20 Igor Sysoev <igor@xxxxxxxxx>
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@xxxxxxxxx>
>
> > 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@xxxxxxxxx
> > http://nginx.org/mailman/listinfo/nginx-ru
> >
>
>
>
> --
> Best regards,
> Koldaev Anton

> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://nginx.org/mailman/listinfo/nginx-ru


--
Игорь Сысоев
http://sysoev.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru



--
Best regards,
Koldaev Anton



--
Best regards,
Koldaev Anton
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.