# HG changeset patch # User Ruslan Ermilov # Date 1387807906 -14400 # Node ID 6d357b2a9d6e553b7849d5a5a08b9873d36993c8 # Parent c51b9491b0bd4536f4295dbd77840614c8341d4f Upstream: keep $upstream_http_x_accel_redirect intact. When processing the X-Accel-Redirect header, the value of the $upstream_http_x_accel_redirect variable was also overwritten. diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1994,7 +1994,7 @@ ngx_http_upstream_test_connect(ngx_conne static ngx_int_t ngx_http_upstream_process_headers(ngx_http_request_t *r, ngx_http_upstream_t *u) { - ngx_str_t *uri, args; + ngx_str_t uri, args; ngx_uint_t i, flags; ngx_list_part_t *part; ngx_table_elt_t *h; @@ -2035,11 +2035,11 @@ ngx_http_upstream_process_headers(ngx_ht } } - uri = &u->headers_in.x_accel_redirect->value; + uri = u->headers_in.x_accel_redirect->value; ngx_str_null(&args); flags = NGX_HTTP_LOG_UNSAFE; - if (ngx_http_parse_unsafe_uri(r, uri, &args, &flags) != NGX_OK) { + if (ngx_http_parse_unsafe_uri(r, &uri, &args, &flags) != NGX_OK) { ngx_http_finalize_request(r, NGX_HTTP_NOT_FOUND); return NGX_DONE; } @@ -2048,7 +2048,7 @@ ngx_http_upstream_process_headers(ngx_ht r->method = NGX_HTTP_GET; } - ngx_http_internal_redirect(r, uri, &args); + ngx_http_internal_redirect(r, &uri, &args); ngx_http_finalize_request(r, NGX_DONE); return NGX_DONE; }