为某个静态URL设置nginx过期

我的应用程序通过这样的URL来提供水印图像:

http://www.domain.com/watermark/image1234.jpg/thumbnail/

我想知道如何设置nginx将其识别为静态图像,这样我就可以将Expiry标题放到它们的头部。 到目前为止,我已经尝试在我的nginx网站configuration下面的设置,但不起作用:

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 

在标题没有到期。 任何人都可以告诉我正确的方法吗?

谢谢

我不认为你的正则expression式会匹配任何东西,因为它们只会匹配.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; }