Mercurial > hg > nginx
comparison src/http/ngx_http_upstream.c @ 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 | d15a00e6d9e6 |
children | 70ba81827472 |
comparison
equal
deleted
inserted
replaced
4374:ae376a94de11 | 4375:f31146f282fd |
---|---|
1893 | 1893 |
1894 if (r->method != NGX_HTTP_HEAD) { | 1894 if (r->method != NGX_HTTP_HEAD) { |
1895 r->method = NGX_HTTP_GET; | 1895 r->method = NGX_HTTP_GET; |
1896 } | 1896 } |
1897 | 1897 |
1898 r->valid_unparsed_uri = 0; | |
1899 | |
1900 ngx_http_internal_redirect(r, uri, &args); | 1898 ngx_http_internal_redirect(r, uri, &args); |
1901 ngx_http_finalize_request(r, NGX_DONE); | 1899 ngx_http_finalize_request(r, NGX_DONE); |
1902 return NGX_DONE; | 1900 return NGX_DONE; |
1903 } | 1901 } |
1904 | 1902 |