caching控制永久301redirectnginx

我想知道是否有一种方法来控制Nginxredirect的生命周期?

我们可以caching301个CDN中的redirect时间,例如20分钟,CDN由标准的caching头控制。 默认情况下,Nginxredirect没有Cache-control或Expires指令。 这可能会导致redirectcaching很长一段时间。 通过具有特定的redirect生命周期,系统可以有机会自我修正,即使是“永久”redirect改变。

另一件事就是这些redirect是从服务器块中包含的,根据nginx规范应该在位置之前进行评估。

我试图添加add_headercaching控制“max-age = 1200,public”; 到redirect文件的底部,但问题是Cache-control被添加了两次 – 第一个来自后端脚本,另一个由add_header指令添加。

在Apache中有一个环境variables的技巧来控制头的重写:

RewriteRule / taxonomy / term /(\ d +)/ feed / taxonomy / term / $ 1 [R = 301,E = expire:1] Header always set Cache-Control“store,max-age = 1200”env = expire

但是我不确定如何在Nginx中实现这个function。

你有没有尝试在你的nginxconfigurationcaching控制标志?

示例configuration:

upstream yourappserver{ server 0.0.0.0:6677; } proxy_cache_path /tmp/cache levels=1:2 keys_zone=my-test-cache:8m max_size=5000m inactive=300m; server { listen 80; server_name your.domain.tld; root /path/to/the/document/root/; access_log /var/log/nginx/access.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_cache my-test-cache; proxy_cache_valid 200 404 1m; proxy_cache_valid 302 20m; proxy_cache_use_stale error timeout invalid_header updating; proxy_redirect off; if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename.html) { rewrite (.*) $1.html break; } if (!-f $request_filename) { proxy_pass http://yourappserver; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 

我想你正在寻找这个特定的configuration片段

 proxy_cache_valid 302 20m;