Nginx的位置问题

我试图为/ misc-stuff /目录中的(仅限图片)设置一个更长的(30天)“expires”标题。

这是我用于我的网站:

# Serve static files directly from nginx location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) { add_header Cache-Control public; add_header Cache-Control must-revalidate; expires 7d; } 

我希望能够保持这个代码来处理常规的站点图像,但创build一个新的块来处理/ misc-stuff /目录。

我努力了 :

 location ^~ /misc-stuff/ { ... } 

我现在遇到的问题是,如果有人试图访问它,那么在该目录中的备份.php文件将显示为纯文本。

我怎样才能在/ misc-stuff /目录下设置.gif图像?

您是否有充分的理由selectstring匹配前缀? ^~不支持正则expression式,所以你现在拥有的东西不能很容易地被修复。 但是,如果你一味地从别处盲目地复制了这个块,那么你很幸运。 更改为不区分大小写的正则expression式匹配前缀,然后编写一个匹配您的需求的正则expression式:

 location ~* ^/misc-stuff/.*\.(jpg|jpeg|gif|png)$ { ... } 

当然,这个目录中的.php文件可能仍然与另一个location指令匹配。 请务必编写一个location指令,将它们发送到您select的PHP解释器,如果您希望它们可执行的话。 (或者改变他们的权限来禁止服务器读取它们,如果你想把它们保存在那个目录中,但是不能执行它们或者让别人读取它们。)

虽然location指令中的标准nginx文档有点缺乏,但是我发现nginx的wiki相当不错。