如果未设置,则我想在nginx中添加一个标题(Cache-control
)。
我需要通过nginx中的标头在某些情况下增加缓存时间。
如果未设置,则我想在nginx中添加一个标题(Cache-control
)。
我需要通过nginx中的标头在某些情况下增加缓存时间。
您可以使用 map
来填充变量 $cachecontrol
。如果客户端的请求头$http_cache_control
为空,则设置自定义值。否则(默认情况下)重用客户端的值。
map $http_cache_control $cachecontrol {
default $http_cache_control;
"" "public, max-age=31536000";
}
接着您可以使用该变量发送上游头信息。
proxy_set_header X-Request-ID $cachecontrol;
对于jmcollin92提出的后续问题,我在SO Documentation中写了以下内容,现在转录如下。
反向代理可以检测客户端是否提供X-Request-ID头,并将其传递给后端服务器。如果没有提供此类标题,则可以提供一个随机值。
map $http_x_request_id $reqid {
default $http_x_request_id;
"" $request_id;
}
上面的代码将请求ID存储在变量$reqid
中,可以随后在日志中使用。
log_format trace '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" $reqid';
它也应该传递给后端服务
location @proxy_to_app {
proxy_set_header X-Request-ID $reqid;
proxy_pass http://backend;
access_log /var/log/nginx/access_trace.log trace;
}