Большое спасибо. Так просто, а сам что-то не додумался, какой только ереси не пробовал написать в регулярке.<br><br><div class="gmail_quote">20 ноября 2009 г. 14:57 пользователь Igor Sysoev <span dir="ltr"><<a href="mailto:is@rambler-co.ru">is@rambler-co.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 Fri, Nov 20, 2009 at 01:38:39PM +0300, Dmitriy Belousov wrote:<br>
<br>
> Мена подсетей, локейшенов и доменов вымышленные, любые совпадения случайны<br>
> :))<br>
><br>
> Не могу придумать, как сделать более гибко. Имею вот такую штуку:<br>
><br>
> ...<br>
> geo $net<br>
> {<br>
> default 0;<br>
> <a href="http://99.99.99.99/21" target="_blank">99.99.99.99/21</a> 1;<br>
> }<br>
><br>
> ...<br>
> ...<br>
><br>
> server<br>
> {<br>
> server_name <a href="http://myserver.ru" target="_blank">myserver.ru</a>;<br>
><br>
> listen <a href="http://100.100.100.100:80" target="_blank">100.100.100.100:80</a>;<br>
><br>
> if ($net)<br>
> {<br>
> rewrite ^(.*)$ <a href="http://net.myserver.ru" target="_blank">http://net.myserver.ru</a>$1;<br>
> }<br>
><br>
> location / {<br>
> proxy_pass <a href="http://127.0.0.1:8210/" target="_blank">http://127.0.0.1:8210/</a>;<br>
> proxy_set_header Host $host;<br>
> proxy_set_header X-Real-IP $remote_addr;<br>
><br>
> }<br>
><br>
> location /location1/ {<br>
> alias /path/to/location1/;<br>
> access_log off;<br>
> expires 30d;<br>
> }<br>
><br>
> location /location2/ {<br>
> alias /path/to/location2/;<br>
> access_log off;<br>
> expires 30d;<br>
> }<br>
> ...<br>
> ...<br>
> location /forum/ {<br>
> access_log on;<br>
> proxy_set_header X-Real-IP $remote_addr;<br>
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>
> proxy_pass <a href="http://192.168.199.199:8220/" target="_blank">http://192.168.199.199:8220/</a>;<br>
> }<br>
><br>
> ...<br>
> ...<br>
> }<br>
><br>
> Как видно из конфига все, кто приходят из подсети $net реврайтятся на другой<br>
> сайт на поддомене. Тот другой сайт - клон того, с которого делается реврайт,<br>
> изменения там на уровне конфига движка самого сайта, т.е. имеет точно такой<br>
> же конфиг веб-серверов (ну кроме реврайта конечно). Все было чудесно, пока<br>
> не появился последний локейшн - /forum/, который вообще на другом сервере<br>
> живет. Теперь стоит задача - реврайтить на основном сайте на поддомен для<br>
> $net абсолютно все, кроме /forum/. Как это более гибко описать, чем строчить<br>
> реврайты во всех локейшенах?<br>
<br>
</div></div>- rewrite ^(.*)$ <a href="http://net.myserver.ru" target="_blank">http://net.myserver.ru</a>$1;<br>
+ rewrite ^(/(?!forum/).*)$ <a href="http://net.myserver.ru" target="_blank">http://net.myserver.ru</a>$request_uri?;<br>
<font color="#888888"><br>
<br>
--<br>
Игорь Сысоев<br>
<a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
<br>
</font></blockquote></div><br>