![](/img/trans.png)
[英]Nginx dynamic proxy_pass with variable location and relative url
[英]How to Cache with NGINX a Location if link backend proxy_pass is dynamic with $arg_url
嘿,伙計們也許可以幫助我,我正在嘗試緩存每 5 分鍾在路徑中更新時間戳的圖像,因此即使設置為在 1 小時后過期,它也會在 5 分鍾后始終給出 MISS。
這是請求 URL: http://example.com//imagecache/?ts=1660906289182&url=http://website.com/image.jpg
這里的“ts=...”每 5 分鍾改變一次
這是 nginx 配置:
location = /imagecache/ {
proxy_cache my_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
proxy_set_header Host $host;
proxy_cache_key $request_uri;
proxy_cache_valid 200 304 30m;
proxy_cache_valid 302 301 2h;
proxy_cache_valid any 5m;
proxy_ignore_headers Cache-Control Expires Set-Cookie;
proxy_cache_methods GET HEAD POST;
proxy_cache_background_update on;
proxy_cache_use_stale error timeout invalid_header http_403 http_404 http_429 http_500 http_502 http_503 http_504;
add_header X-Cache-Status $upstream_cache_status;
add_header X-Cache-Date $upstream_http_date;
proxy_pass http://${BACKEND_HOSTNAME}:8080/html/mock/imageload.jsp?url=$arg_url;
我確實嘗試過 reqrite 但不知何故不起作用。
我需要的是忽略?ts=& 並始終將其視為相同的圖像並將其緩存在其中,這樣 proxy_cache_valid 時間將按應有的方式使用。
時間戳正在改變,但圖像是相同的。
我在這里先向您的幫助表示感謝。
您可以使用http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg設置您的 proxy_cache_key 以排除 ts 查詢參數並僅包含arg_url
proxy_cache_key $scheme://$proxy_host$uri$is_args$arg_url;
如果您有多個要包含但僅排除 ts 的查詢參數,您可以創建一個 map 正則表達式查詢參數,然后在您的 proxy_cache_key 中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.