Mercurial > hg > nginx
changeset 4375:f31146f282fd
Added clearing of r->valid_unparsed_uri on internal redirects.
This resolves issue with try_files (see ticket #70), configuration like
location / { try_files $uri /index.php; }
location /index.php { proxy_pass http://backend; }
caused nginx to use original request uri in a request to a backend.
Historically, not clearing of the r->valid_unparsed_uri on internal redirect
was a feature: it allowed to pass the same request to (another) upstream
server via error_page redirection. Since then named locations appeared
though, and it's time to start resetting r->valid_unparsed_uri on internal
redirects. Configurations still using this feature should be converted
to use named locations instead.
Patch by Lanshun Zhou.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 19 Dec 2011 14:11:48 +0000 |
parents | ae376a94de11 |
children | 9346356e433d |
files | src/http/ngx_http_core_module.c src/http/ngx_http_upstream.c |
diffstat | 2 files changed, 1 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c Mon Dec 19 13:28:22 2011 +0000 +++ b/src/http/ngx_http_core_module.c Mon Dec 19 14:11:48 2011 +0000 @@ -2506,6 +2506,7 @@ #endif r->internal = 1; + r->valid_unparsed_uri = 0; r->add_uri_to_alias = 0; r->main->count++;
--- a/src/http/ngx_http_upstream.c Mon Dec 19 13:28:22 2011 +0000 +++ b/src/http/ngx_http_upstream.c Mon Dec 19 14:11:48 2011 +0000 @@ -1895,8 +1895,6 @@ r->method = NGX_HTTP_GET; } - r->valid_unparsed_uri = 0; - ngx_http_internal_redirect(r, uri, &args); ngx_http_finalize_request(r, NGX_DONE); return NGX_DONE;