资源下载 - 从此开始!

下载我_精品源码软件教程资源网

您的位置:主页 > 服务器 > 正文

Nginx设置缓存expires后返回404找不到文件的原因

2018-10-10 18:22 来源:互联网 编辑:admin

Nginx服务器想设置一些文件(图片、js、css等)的浏览器缓存日期,但一旦在配置文件nginx.conf里加上expires的语句,图片就不能显示。expires语句的写法应该没错,因为其他博主使用是有效的。这是怎么回事?

下面是nginx.conf代码:

server {
listen 80;
server_name example.com
  location / {
      root    /data/file/static/blogourl;
      index   index.html index.htm index.php;
  }
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
      expires 30d;
      add_header Pragma public;
      add_header Cache-Control "public";
  }
  location ~* \.php$ {
  ssi on;
  root /data/file/static;
  fastcgi_param HTTP_USER_AGENT  $http_user_agent;
  fastcgi_index   index.php;
  #fastcgi_pass    127.0.0.1:9000;
  #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
  fastcgi_pass   unix:/var/run/php-fpm.sock;
  include         fastcgi_params;
  fastcgi_param   SCRIPT_FILENAME    /data/file/static/blogourl$fastcgi_script_name;
  fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
  }
}

有网友认为,这不是语法错误,而是逻辑错误。Nginx的location是单独的,所以上例里静态文件没有root指向,这个时候root会被认为是默认的路径(/etc/nginx/html或其他),这样,当然就没有这些文件了,图片当然也不会有显示了。

通过这样解释,上面代码改为:

  root    /data/file/static/blogourl;
  location / {
      index   index.html index.htm index.php;
  }
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
      expires 30d;
      add_header Pragma public;
      add_header Cache-Control "public";
  }
  location ~* \.php$ {
      ssi on;
      root /data/file/static;
      fastcgi_param HTTP_USER_AGENT  $http_user_agent;
      fastcgi_index   index.php;
      #fastcgi_pass    127.0.0.1:9000;
      #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_pass   unix:/var/run/php-fpm.sock;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME    /data/file/static/blogourl$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
  }

这样,就不会有问题了。

打赏一下,我们会为大家提供更多优质资源!

相关文章,95%的人会看!{有内幕、有真相...}

看过本文的人还看过

关闭

微信扫一扫

站长微信账号