我的应用程序通过这样的 URL 提供水印图像:
http://www.domain.com/watermark/image1234.jpg/thumbnail/
我想知道如何设置 nginx 以将其识别为静态图像,以便我可以为其添加 Expiry 标头。到目前为止,我已在 nginx 站点配置中尝试了以下设置,但没有效果:
location ~* \.(png|gif|jpg|jpeg|swf|ico)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
tcp_nodelay off;
break;
}
和
location ~* \.(png|gif|jpg|jpeg|swf|ico)\/[a-zA-Z0-9-]\/$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
tcp_nodelay off;
break;
}
我得到的输出:
$curl -I http://www.domain.com/watermark/image1234.jpg/thumbnail/
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 06 May 2013 12:33:51 GMT
Content-Type: image/jpeg
Connection: keep-alive
X-Powered-By: PHP/5.3.23
Content-Disposition: inline; filename="phpThumb_generated_thumbnailjpg"
Last-Modified: Mon, 06 May 2013 09:52:52 GMT
标题中没有过期。有人能告诉我正确的方法吗?
谢谢
答案1
我认为您的正则表达式不会匹配任何内容,因为它们只会匹配完全匹配的文件.png
- 没有文件名的空格。
所以他们应该是这样的:
location ~* /.+\.(png|gif|jpg|jpeg|swf|ico)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
tcp_nodelay off;
break;
}
和
location ~* /(.+)\.(png|gif|jpg|jpeg|swf|ico)\/[a-zA-Z0-9-]\/$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
tcp_nodelay off;
break;
}