]> git.kaiwu.me - nginx.git/commit
Fixed proxy_set_header inheritance with proxy_cache (ticket #45).
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 14 Nov 2011 13:18:15 +0000 (13:18 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 14 Nov 2011 13:18:15 +0000 (13:18 +0000)
commitb5984de06b0ff350b06c270a784aa2fe107e72a4
treeb2980267a3f25c623a77211945b027b98969f4f9
parent66a60a62cc002db31f8dd9c5112a92d55bf13fbd
Fixed proxy_set_header inheritance with proxy_cache (ticket #45).

Headers cleared with cache enabled (If-Modified-Since etc.) might be cleared
in unrelated servers/locations without proxy_cache enabled if proxy_cache was
used in some server/location.

Example config which triggered the problem:

    proxy_set_header X-Test "test";
    server { location /1 { proxy_cache name; proxy_pass ... } }
    server { location /2 { proxy_pass ... } }

Another one:

    server {
        proxy_cache name;
        location /1 { proxy_pass ... }
        location /2 { proxy_cache off; proxy_pass ... }
    }

In both cases If-Modified-Since header wasn't sent to backend in location /2.

Fix is to not modify conf->headers_source, but instead merge user-supplied
headers from conf->headers_source and default headers (either cache or not)
into separate headers_merged array.
src/http/modules/ngx_http_proxy_module.c