我的网站在node.js上运行,并且我正在使用Nginx从无cookie的域中存储我的静态文件。对于这些文件,我已设置Nginx来设置expires标头。但是,它似乎不适用于我的收藏夹。

我的Nginx默认配置文件:

# static content
server {
        server_name static.domain.com;
        root /my/website/lives/here/public;

        location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 365d;
        }
}


Ico在mime.types中具有地雷类型:

image/x-icon    ico;


服务响应头显示无缓存控制或过期:

Accept-Ranges:bytes
Connection:keep-alive
Content-Length:32988
Content-Type:image/x-icon
Date:Tue, 11 Dec 2012 23:20:19 GMT
Last-Modified:Sat, 08 Dec 2012 11:51:28 GMT
Server:nginx/1.1.19


这些是具有缓存控制并且如您期望的那样到期的随机映像的响应:

Cache-Control:max-age=31536000
Connection:keep-alive
Date:Tue, 11 Dec 2012 23:24:00 GMT
Expires:Wed, 11 Dec 2013 23:24:00 GMT
Last-Modified:Tue, 11 Dec 2012 23:04:24 GMT
Server:nginx/1.1.19


我检查了favicon是否从静态域(static.domain.com/favicon.ico)提供,而不是从网站文档根目录(domain.com/favicon.ico)提供。有谁知道哪里出了问题或如何调试?

最佳答案

显然,与favicon匹配的另一行隐藏在一个include文件中,为简单起见,我在问题中省略了该行。

location = /favicon.ico {
    log_not_found   off;
    access_log  off;
}


删除它(因为此站点上存在收藏夹图标)解决了我的问题:-)

关于node.js - 使用Nginx作为Node.js的代理将Expires header 添加到favicon.ico,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13830255/

10-14 00:15