mirror of
https://github.com/nginx/nginx.git
synced 2026-10-22 20:11:17 +00:00
Rewrite: fixed segfault with rewritten URI and "alias".
The "alias" directive cannot be used in the same location where URI
was rewritten. This has been detected in the "rewrite ... break"
case, but not when the standalone "break" directive was used.
This change also fixes proxy_pass with URI component in a similar
case:
location /aaa/ {
rewrite ^ /xxx/yyy;
break;
proxy_pass http://localhost:8080/bbb/;
}
Previously, the "/bbb/yyy" would be sent to a backend instead of
"/xxx/yyy". And if location's prefix was longer than the rewritten
URI, a segmentation fault might occur.
This commit is contained in:
parent
48086f79ad
commit
af8ea176a7
1 changed files with 8 additions and 1 deletions
|
|
@ -1470,7 +1470,14 @@ ngx_http_script_return_code(ngx_http_script_engine_t *e)
|
|||
void
|
||||
ngx_http_script_break_code(ngx_http_script_engine_t *e)
|
||||
{
|
||||
e->request->uri_changed = 0;
|
||||
ngx_http_request_t *r;
|
||||
|
||||
r = e->request;
|
||||
|
||||
if (r->uri_changed) {
|
||||
r->valid_location = 0;
|
||||
r->uri_changed = 0;
|
||||
}
|
||||
|
||||
e->ip = ngx_http_script_exit;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue