Proxy_cache_key based on custom header

deivid__ nginx-forum at forum.nginx.org
Tue Jun 27 21:43:22 UTC 2017


Hi.

I'm trying to use 2 level proxying to cache files delivered with
X-Accel-Redirect. This kinda works, the only thing missing is getting the
cache_key to be the filename.


If `proxy_cache` is unset (or set to the default), the caching mechanism
"works":
- Every request gets cached (good)
- Different URLs that map to the same file get mapped to different cache
keys (bad)
- I get the header "X-Banana" with the correct file path (good)

If `proxy_cache` is set to `$sent_http_x_test_header`:
- Every request gets cached (good)
- All URLs map to the same cache (very bad!)
- I don't get the 'X-Banana' header at all

This leads me to believe that in the second case, `$sent_http_x_test_header`
is empty. But it's not in the first case? Why? What can I do?

Full config below:


proxy_cache_path /cache/nginx levels=1:2 keys_zone=cache:10m inactive=24h;

upstream backend {
    server unix:///tmp/streaming-backend.sock;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    include /etc/nginx/ssl;
    index index.html;
    server_name pilotage.streamall.pw;
    gzip off;

    proxy_cache_min_uses 1;
    proxy_cache cache;
    proxy_cache_valid 200 24h;

    location /v/ {
        rewrite /v/(.+) /$1 break;
        proxy_pass http://127.0.0.1:9999/;

        proxy_request_buffering off; # needs 1.7.11
        proxy_ignore_headers X-Accel-Expires Expires Cache-Control
Set-Cookie;

        # proxy_cache_key $sent_http_x_test_header;
        add_header X-Proxy-Cache $upstream_cache_status;
        add_header X-Banana $sent_http_x_test_header;

    }

}

server {
    listen 9999;
    location / {
        uwsgi_pass backend;
        include uwsgi_params;

        proxy_set_header   X-Real-IP       $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /converted/ {
        internal;
        root /nfs/;
        add_header X-Test-Header $document_uri;
    }
}

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,275178,275178#msg-275178



More information about the nginx mailing list