nginx浏览器缓存指令带来404未找到

时间:2015-10-31 21:11:05

标签: nginx browser-cache

我想为图像实现浏览器缓存的其中一个网站 在virtual.conf上有这个特定的服务器{}阻止

server {

    listen       80;
    server_name www.example.net  example.net;

    location / {
        root   /var/www/example.net/public_html;
        index  index.html index.htm index.php;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /var/www/example.net/public_html;
    }

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/example.net/public_html;
    }

    location ~*  \.(jpg|jpeg|png|gif)$ {
       expires 180d;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        root           /var/www/example.net/public_html;
        error_log      /var/www/example.net/public_html/error.log error;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    } 
}

通常这个指令

    location ~*  \.(jpg|jpeg|png|gif)$ {
       expires 180d;
    }

应该在用户端处理缓存图像。但是当我访问时 在我的网站上的图像我找不到404。我不知道为什么会这样。

是。我在添加指令后重新加载/重新启动了nginx。

该图片位于子文件夹中,如:
example.net/images/dir1/user_photos/photo.jpg

example.net/images/dir1/user_photos/photo.jpg

任何帮助将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:1)

Root参数应该在location指令之外。

将root置于内部位置

不是最佳做法

更改

 location / {
        root   /var/www/html;
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
 } 

要:

 root   /var/www/html;
 location / {
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
 }