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
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
|