当使用nginx fastcgi_cache时,我比任何其他HTTP代码缓存HTTP 200响应更长。我希望能够根据此代码有条件地设置expires标头。
例如:
fastcgi_cache_valid 200 302 5m;
fastcgi_cache_valid any 1m;
if( $HTTP_CODE = 200 ) {
expires 5m;
}
else {
expires 1m;
}
类似上述内容(在位置容器内)?
答案 0 :(得分:3)
确定,来自http://wiki.nginx.org/HttpCoreModule#Variables
$sent_http_HEADER
The value of the HTTP response header HEADER when converted to lowercase and
with 'dashes' converted to 'underscores', e.g. $sent_http_cache_control,
$sent_http_content_type...;
所以你可以匹配if语句中的$ sent_http_response
虽然http://nginx.org/en/docs/http/ngx_http_headers_module.html#expires没有列出是否为expires指令的允许上下文,但仍然存在问题
你可以解决在if块中设置变量的问题,然后再像这样引用它:
set $expires_time 1m;
if ($send_http_response ~* "200") {
set $expires_time 5m;
}
expires $expires_time;