<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#ccccff">
    <br>
    Приветствую, All<br>
    <br>
    Настраивал nginx фронтом к плону, наткнулся на грабли. Нжинкс не
    эскейпит пробелы в запросах к бекэнду.<br>
    Очень похоже на багу описанную здесь <a
      href="http://forum.nginx.org/read.php?21,107888">http://forum.nginx.org/read.php?21,107888</a>
    но немного в другой конфигурации.  nginx version: nginx/0.8.44<br>
    <br>
    Если описать конфиг так:<br>
    <br>
    server {<br>
            listen       *:80;<br>
            server_name  tst.plone.lan site.plone.lan mgmt.plone.lan<br>
    <br>
            set $backend  <a class="moz-txt-link-freetext" href="http://localhost:8080">http://localhost:8080</a>;<br>
            set $zope_prefix
    /VirtualHostBase/http/$host/w/Site.Plone.Lan/Main/VirtualHostRoot;<br>
    <br>
        location /  {<br>
            proxy_set_header   Host             $host;<br>
            proxy_pass $backend$zope_prefix$uri;<br>
        }<br>
    }<br>
    <br>
    То нжинкс передает запросы в зоп заменяя исходные %20 на "пробелы".<br>
    <br>
    В логах нжинкса запрос выглядит как <br>
    <br>
    192.168.1.20  - - [23/Jul/2010:16:20:36 +0400] "GET
    /portal_javascripts/Plone%20Tableless/toc.js HTTP/1.1" 200 2129 "-"
    "Opera/9.80 (X11; Linux i686; U; en) Presto/2.5.29 Version/10.60"<br>
    <br>
    А в зоп он  приходит так<br>
    127.0.0.1 - Anonymous [23/Jul/2010:16:23:39 +0400] "GET
    /VirtualHostBase/http/site.plone.lan/w/Site.Plone.Lan/Main/VirtualHostRoot/portal_javascripts/Plone
    Tableless/toc.js HTTP/1.0" 400 269
    <a class="moz-txt-link-rfc2396E" href="http://lbg.pik.ru/kupit-kvartiru">"http://lbg.pik.ru/kupit-kvartiru"</a> "Mozilla/5.0 (compatible;
    Konqueror/4.4; Linux) KHTML/4.4.5 (like Gecko) SUSE"<br>
    <br>
    т.е. пробел в строке /Plone Tableless/ передается в виде именно
    пробела.<br>
    <br>
    Если описать конфиг так:<br>
    <br>
    server {<br>
            listen       *:80;<br>
            server_name  tst.plone.lan site.plone.lan mgmt.plone.lan<br>
    <br>
        location /  {<br>
            rewrite     ^/(.*)$  
    /VirtualHostBase/http/$host/w/Site.Plone.Lan/Main/VirtualHostRoot/$1
    break;<br>
    <br>
            proxy_set_header   Host             $host;<br>
            proxy_pass <a class="moz-txt-link-freetext" href="http://localhost:8080">http://localhost:8080</a>;<br>
        }<br>
    }<br>
    <br>
    то все работает нормально, все пробелы в урлах преобразуются в %20.
    Однако хотелось бы использовать переменные в proxy_pass и избавится
    от лишних реврайтов.<br>
    <br>
    Или я где-то что-то пропустил или одно из двух.<br>
    Буду признателен за помощь.<br>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
------------------------------                                                                             
Emil Muratov
                                                                                                           

</pre>
  </body>
</html>