Всем привет, опять столкнулся с той же  проблемой с экранированием. nginx 0.5.35<br><br>Имеем запрос /cgi-bin/script.pl?a=b<br><br>Если nginx не находит предварительно сгенеренный&nbsp;/Data/static/$host/script.pl_a_b (ну, к примеру, для этого виртхоста него нет), то он обращается к memcached.<br>
И&nbsp;вот&nbsp;если&nbsp;и&nbsp;там&nbsp;такого&nbsp;ключа&nbsp;нет,&nbsp;то идет обращение на бэкенд. Тут и начинается самое интересное.<br>На бэкенд передается запрос GET /cgi-bin/script.pl%3fa=b<br><br> Кусок конфига:<br><br>if ($request_uri = &#39;/cgi-bin/script.pl?a=b&#39;) {<br>
    &nbsp;&nbsp;&nbsp;&nbsp;rewrite ^(.*)$ /static/script.pl_a_b? last;<br>}<br><br>location = /static/script.pl_a_b {<br>    &nbsp;&nbsp;&nbsp;&nbsp;if ($request_method = POST) {<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^(.*)$  $request_uri;<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass      <a href="http://backend">http://backend</a>;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;}<br><br>    &nbsp;&nbsp;&nbsp;&nbsp;if (!-e /Data/static/$host/script.pl_a_b) {<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^(.*)$  /memcached_generic;<br>    &nbsp;&nbsp;&nbsp;&nbsp;}<br><br>    &nbsp;&nbsp;&nbsp;&nbsp;types { }<br>    &nbsp;&nbsp;&nbsp;&nbsp;default_type text/html;<br>    &nbsp;&nbsp;&nbsp;&nbsp;alias /Data/static/$host/script.pl_a_b;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;internal;<br>}<br><br>location = /memcached_generic {<br>    &nbsp;&nbsp;&nbsp;&nbsp;set $memcached_key &quot;$host$request_uri&quot;;<br>    &nbsp;&nbsp;&nbsp;&nbsp;memcached_pass memcached;<br>    &nbsp;&nbsp;&nbsp;&nbsp;error_page 404 502 504 405 = @fallback;<br>}<br><br>
location  @fallback {<br>    &nbsp;&nbsp;&nbsp;&nbsp;rewrite  ^(.*)$  $request_uri break;<br>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header      Host    $host;<br>    &nbsp;&nbsp;&nbsp;&nbsp;proxy_pass            <a href="http://backend">http://backend</a>;<br>}<br><br>