我试图让nginx发送过期头,我尝试了两种不同的方式:
location ~* ^.+\.(ico|css|js|gif|jpe?g|png)\?[0-9]+$ { expires max; }
和
location / { if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)\?[0-9]+$") { expires max; break; } #.... }
没有一个工作。 没有到期标题发送任何。 任何想法如何debugging这个问题?
位置应该只在path上,没有查询string,所以这不应该工作。
尝试以下操作:
位置〜*。(ico | css | js | gif | jpe?g | png)$ {
到期最大;
}
或者,至less,下面也应该工作:
位置〜*。(ico | css | js | gif | jpe?g | png)(\?[0-9] +)?$ {
到期最大;
}
testing,以确保位置块正在通过在其中放置一个额外的指令被调用…如下所示:
location ~* \.(ico|css|js|gif|jpe?g|png)$ { expires max; auth_basic "Restricted, please login"; auth_basic_user_file htpasswd.users; }
如果在请求匹配的文件时没有提交auth提示符,那么可以确定该块没有被调用,因为先前的中断或者你有什么。
这些线实际上工作,我只是testing他们错了。 这些行正确地尝试caching时间戳资源(最后是那些带有?id的资源),而我正在查看未加时间戳的资源。
正在使用nginx作为caching代理? 如果是这样,请注意上游caching指令得到了尊重,但是您仍然可以指示nginx不使用proxy_ignore_headers
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;