NGINX - 如何为所有虚拟主机设置过期标头?

时间:2016-03-25 14:43:43

标签: nginx header config

我正在寻找一种设置服务器范围的过期标头的方法,以便所有现有或新的虚拟主机都配置相同。不幸的是,我无法在每个虚拟主机的conf文件中执行此操作,因此我正在寻找一种方法来在服务器范围内制作以下指令。

location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg
              |jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid
              |midi|wav|bmp|rtf)$ {
    expires max;
    log_not_found off;
    access_log off;
}

1 个答案:

答案 0 :(得分:3)

expires指令可以放在http块中,因此由所有服务器块及其位置块继承。

本手册显示了使用expires指令和map变量的示例。请参阅this document

您可以使用$request_uri而不是$sent_http_content_type来匹配现有的正则表达式,并使用以下方式实现相同的行为:

map $request_uri $expires {
    default off;
    ~*\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)(\?|$) max;
}    
expires $expires;

这两个指令都放在http块内,但在任何server块之外。

有关详细信息,请参阅this document