管理图像和静态文件nginx的正确方法

时间:2014-04-29 16:04:31

标签: image nginx

我是nginx服务的新手,我误解了nginx如何管理要显示的文件。

让我们举一个例子。在我的Web应用程序中,我有这个路径的静态文件:

---public
   | -- js
   | -- img
   | -- css

要调用此类静态文件,只需要对当前网址进行数字处理:www.mysite.com/js/some.jswww.mysite.com/img/myimg.jpg即可显示。

但是现在让我们说我的php文件上有一个脚本,使用不同的网址从public/img文件夹中获取图片,使用示例www.mywebsite.com/20/10/29/myimg.jpg

如果我将此代码添加到我在nginx中的配置,它将正确地获取所有文件以提供给我的应用程序当然文件的真实路径

location ~* \.(jpe?g|gif|png|ico|css|js|html|htm|woff|svg|ttf)$ {
                  access_log off;
                  expires max;
        }

使用生成图像的url获取上一个示例,如果我在nginx中使用该代码块并尝试去:

www.mywebsite.com/20/10/29/myimg.jpg

图像将正确显示,因为我通过php显示它,但在控制台日志中图像获得 404 ,因为nginx会搜索扩展名为 jpg 的文件在public/20/10/29/myimg.jpg上,即使文件位于public/img文件夹中也是有意义的。

我的问题是,有人可以向我解释如何通过动态网址为服务静态文件和文件创建nginx逻辑?

1 个答案:

答案 0 :(得分:0)

正确的方法是摆脱可怕的阻止location ~* (...)并使用简单的前缀位置。

location /img/ {
    access_log off;
    expires max;
}
location /js/ {
    access_log off;
    expires max;
}
location /css/ {
    access_log off;
    expires max;
}