? -> %3f при передаче на бэкенд
Igor Zakharov
garikz at gmail.com
Wed Feb 6 19:45:01 MSK 2008
Всем привет, опять столкнулся с той же проблемой с экранированием. nginx
0.5.35
Имеем запрос /cgi-bin/script.pl?a=b
Если nginx не находит предварительно
сгенеренный /Data/static/$host/script.pl_a_b (ну, к примеру, для этого
виртхоста него нет), то он обращается к memcached.
И вот если и там такого ключа нет, то идет обращение на бэкенд. Тут и
начинается самое интересное.
На бэкенд передается запрос GET /cgi-bin/script.pl%3fa=b
Кусок конфига:
if ($request_uri = '/cgi-bin/script.pl?a=b') {
rewrite ^(.*)$ /static/script.pl_a_b? last;
}
location = /static/script.pl_a_b {
if ($request_method = POST) {
rewrite ^(.*)$ $request_uri;
proxy_pass http://backend;
}
if (!-e /Data/static/$host/script.pl_a_b) {
rewrite ^(.*)$ /memcached_generic;
}
types { }
default_type text/html;
alias /Data/static/$host/script.pl_a_b;
internal;
}
location = /memcached_generic {
set $memcached_key "$host$request_uri";
memcached_pass memcached;
error_page 404 502 504 405 = @fallback;
}
location @fallback {
rewrite ^(.*)$ $request_uri break;
proxy_set_header Host $host;
proxy_pass http://backend;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080206/45dda877/attachment.html>
More information about the nginx-ru
mailing list