Не хочется иметь длинную простыню с аналогичными конфигами. Тем более, если в 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">&lt;<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>&gt;</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>
&gt; Привет<br>
&gt; Имею вот такой server_name:<br>
&gt;<br>
&gt; &gt; # Любой поддомен, кроме исключенных<br>
&gt; &gt;   server_name ~(?&lt;!^one|^two|^three|^www)\.sitename\.ru$;<br>
&gt; &gt;<br>
&gt;<br>
&gt; php-файлы проксируются на php-fpm:<br>
&gt;<br>
&gt; &gt;   location ~ \.(php|php4|php5|phtml)$ {<br>
&gt; &gt;     fastcgi_pass <a href="http://127.0.0.1:9000" target="_blank">127.0.0.1:9000</a>;<br>
&gt; &gt;     try_files $fastcgi_script_name =404;<br>
&gt; &gt;<br>
&gt; &gt;     fastcgi_param SERVER_NAME $server_name;<br>
&gt; &gt;<br>
&gt; ...<br>
&gt; &gt;<br>
&gt;<br>
&gt; Проблема в том, что в SERVER_NAME попадает именно регексп, а не, например,<br>
&gt; <a href="http://one.sitename.ru" target="_blank">one.sitename.ru</a>.<br>
&gt; Реврайт, после которого фейлится:<br>
&gt;<br>
&gt; &gt; 2010/09/20 09:42:20 [notice] 19176#0: *24 rewritten data:<br>
&gt; &gt; &quot;/urlrewriteprepend.php&quot;, args: &quot;logout=yes&amp;CODE=alozovaya&quot;, client:<br>
&gt; &gt; 94.198.48.35, server: ~(?&lt;!^one|^two|^three|^www)\.sitename\.ru$, request:<br>
&gt; &gt; &quot;GET /blogs/one/index.php?logout=yes&amp;CODE=one HTTP/1.1&quot;, host: &quot;<br>
&gt; &gt; <a href="http://one.sitename.ru" target="_blank">one.sitename.ru</a>&quot;, referrer: &quot;<a href="http://one.sitename.ru/" target="_blank">http://one.sitename.ru/</a>&quot;<br>
&gt; &gt;<br>
&gt;<br>
&gt; Что отдается в браузере:<br>
&gt;<br>
&gt; &gt; Server not found<br>
&gt; &gt; Firefox can&#39;t find the server at ~(.<br>
&gt; &gt;<br>
&gt;<br>
&gt; В адресной строке:<br>
&gt;<br>
&gt; &gt; http://<br>
&gt; &gt; ~%28/?%3C!^one|^two|^three|^www%29\.sitename\.ru$/?logout=yes&amp;CODE=one<br>
&gt; &gt;<br>
&gt;<br>
&gt; Как через 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>