技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

Nginx設(shè)置緩存expires后返回404找不到文件的原因

作者:admin    時間:2017-1-8 2:30:40    瀏覽:

Nginx服務(wù)器想設(shè)置一些文件(圖片、js、css等)的瀏覽器緩存日期,但一旦在配置文件nginx.conf里加上expires的語句,圖片就不能顯示。expires語句的寫法應(yīng)該沒錯,因?yàn)槠渌┲魇褂檬怯行У?。這是怎么回事?

下面是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;
  }
}

有網(wǎng)友認(rèn)為,這不是語法錯誤,而是邏輯錯誤。Nginx的location是單獨(dú)的,所以上例里靜態(tài)文件沒有root指向,這個時候root會被認(rèn)為是默認(rèn)的路徑(/etc/nginx/html或其他),這樣,當(dāng)然就沒有這些文件了,圖片當(dāng)然也不會有顯示了。

通過這樣解釋,上面代碼改為:

  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;
  }

這樣,就不會有問題了。

相關(guān)文章

標(biāo)簽: nginx  linux技術(shù)  緩存  
相關(guān)文章
    x
    • 站長推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */