Hi. To perform rewrite, nginx does ngx_unescape_uri and then ngx_escape_uri to pass request to backend. There is a problem with this functions: they both can't handler "+" propertly: ngx_escape_uri does not escape «+» character
So when there is «%2b» sequence in rewrite command, it will be passed to
backend as «+» where it SHOULD be interpreted as space character.
I've attached a small patch that solved a problem for me.
For testing I used
location /foo {
rewrite (.*) $1 break;
proxy_pass http://localhost:1234;
}
+ while true; do nc -l -p 1234; done — to watch what is really send to
backend by nginx.
--
Regards,
Dmitry
uri-escape.patch
Description: Binary data
_______________________________________________ nginx-devel mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-devel
