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