можно host-ами&nbsp;<br><br><div><span class="gmail_quote">2007/11/27, Анатолий Шарифулин &lt;<a href="mailto:subscribe@tochkak.ru">subscribe@tochkak.ru</a>&gt;:</span><blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">









<div lang="RU" link="blue" vlink="purple">

<div>

<p>Приветствую!</p>

<p>&nbsp;</p>

<p><span lang="EN-US">Proxy</span>_<span lang="EN-US">pass</span><span lang="EN-US"> </span>не понимает переменные, ни в качестве всего <span lang="EN-US">URI</span>, ни в качестве порта.</p>

<p>&nbsp;</p>

<p>Пример<span lang="EN-US">:</span></p>

<p><span lang="EN-US">map&nbsp; $http_host&nbsp; $my_port&nbsp; {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://game.rnd.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">game.rnd.example.com</a>&nbsp;&nbsp;&nbsp;
8001;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://admin.rnd.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">admin.rnd.example.com</a>&nbsp;&nbsp;
8081;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://game.msk.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">game.msk.example.com</a>&nbsp;&nbsp;&nbsp;
8004;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://admin.msk.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">admin.msk.example.com</a>&nbsp;&nbsp;
8084;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://game.test.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">game.test.example.com</a>&nbsp;&nbsp;
8003;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://admin.test.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">admin.test.example.com</a>&nbsp;
8083;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://game.new.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">game.new.example.com</a>&nbsp;&nbsp;&nbsp;
8002;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://admin.new.example.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">admin.new.example.com</a>&nbsp;&nbsp;
8082;</span></p>

<p><span lang="EN-US">}</span></p>

<p><span lang="EN-US">&nbsp;</span></p>

<p><span lang="EN-US">location / {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp; ($my_port) {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass <a href="http://127.0.0.1:$my_port" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://127.0.0.1:$my_port</a>;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>

<p>}</p>

<p>&nbsp;</p>

<p>Что не так?</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>Решил обойти проблему.</p>

<p><span lang="EN-US">location / {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($http_host ~
rnd\.example\.com$) {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include
/path/rnd.example.com/nginx.conf;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p>

<p>}</p>

<p>Так не работает, пишет, что <span lang="EN-US">include</span><span lang="EN-US"> </span>не определен в <span lang="EN-US">if</span>. </p>

<p>&nbsp;</p>

<p>Попробовал через именованный локации, только не знаю как их
вызвать.</p>

<p>Вызвал через <span lang="EN-US">error</span>_<span lang="EN-US">page</span>,
но только <span lang="EN-US">GET</span><span lang="EN-US"> </span>запросы попадают
через <span lang="EN-US">error</span>_<span lang="EN-US">page</span><span lang="EN-US"> </span>на именованную локацию, остальные – ошибка 405.</p>

<p><span lang="EN-US">location / {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($http_host ~
rnd\.example\.com$) {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error_page
404 = @rnd;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span></p>

<p><span lang="EN-US">}</span></p>

<p><span lang="EN-US">location @rnd {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include
/path/rnd.example.com/nginx.conf;</span></p>

<p>}</p>

<p>…</p>

<p>&nbsp;</p>

<p>В итоге написал в лоб, но решение мне не нравится:</p>

<p><span lang="EN-US">&nbsp;</span></p>

<p><span lang="EN-US">if ($http_host ~ ^game\.rnd\.example\.com$)
{</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>proxy_pass
<a href="http://127.0.0.1:8001" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://127.0.0.1:8001</a>;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US">break;</span></p>

<p><span lang="EN-US">}</span></p>

<p><span lang="EN-US">if ($http_host ~
^admin\.rnd\.example\.com$) {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass
<a href="http://127.0.0.1:8081" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://127.0.0.1:8081</a>;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</span></p>

<p><span lang="EN-US">}</span></p>

<p><span lang="EN-US">&nbsp;</span></p>

<p>…</p>

<p><span lang="EN-US">&nbsp;</span></p>

<p><span lang="EN-US">if ($http_host ~
^game\.test\.example\.com$) {</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass
<a href="http://127.0.0.1:8003" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://127.0.0.1:8003</a>;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</span></p>

<p><span lang="EN-US">}</span></p>

<p><span lang="EN-US">if ($http_host ~ ^admin\.test\.example\.com$)
{</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass
<a href="http://127.0.0.1:8083" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://127.0.0.1:8083</a>;</span></p>

<p><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</span></p>

<p><span lang="EN-US">}</span></p>

<p><span lang="EN-US">&nbsp;</span></p>

<p>Плюс <span lang="EN-US">auth</span>_<span lang="EN-US">basic</span><span lang="EN-US"> </span>использовать в <span lang="EN-US">if</span> нельзя, т.е. не
получится сделать для каждого субдомена свою авторизацию, только общую.</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>Что посоветуете?</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

</div>

</div>


</blockquote></div><br>