server_name regexp
Igor Sysoev
igor на sysoev.ru
Пн Сен 20 11:27:59 MSD 2010
On Mon, Sep 20, 2010 at 11:23:57AM +0400, Anton Koldaev wrote:
> Только $host вместо $server_name в fastcgi_param всё равно приходится
> использовать там где "server_name _;".
> Это корректно?
Да, $server_name - это первое имя в server_name, каким странным оно бы
не было. $host - это $http_host, или $server_name, если $http_host пустой.
> 2010/9/20 Anton Koldaev <koldaevav at gmail.com>
>
> > Благодарю. Таки воспользовался советом.
> >
> >
> > 2010/9/20 Igor Sysoev <igor at 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 at 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 at nginx.org
> >> > > http://nginx.org/mailman/listinfo/nginx-ru
> >> > >
> >> >
> >> >
> >> >
> >> > --
> >> > Best regards,
> >> > Koldaev Anton
> >>
> >> > _______________________________________________
> >> > nginx-ru mailing list
> >> > nginx-ru at nginx.org
> >> > http://nginx.org/mailman/listinfo/nginx-ru
> >>
> >>
> >> --
> >> Игорь Сысоев
> >> http://sysoev.ru
> >>
> >> _______________________________________________
> >> nginx-ru mailing list
> >> nginx-ru at nginx.org
> >> http://nginx.org/mailman/listinfo/nginx-ru
> >>
> >
> >
> >
> > --
> > Best regards,
> > Koldaev Anton
> >
>
>
>
> --
> Best regards,
> Koldaev Anton
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru