Ubuntu

Nginx 優化後圖片顯示問題

  • November 8, 2018

我使用 gtmetrix 進行了一些優化以提高網站性能。比如啟用 gzip 壓縮等。

當我嘗試使用 browserling.com 之類的線上服務測試站點時,不會顯示圖像。

https://programlama.tk

當我嘗試從伺服器連接時。像 192.168.1.xx 它工作正常。

/etc/nginx/nginx.conf 的相關部分是這樣的:

##
# Gzip Settings
##

gzip on;

gzip_vary on;
gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

在 /etc/nginx/sites-enabled/programlama.tk 我添加了這部分。

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

location ~*  \.(css|js)$ {
   expires 30d;
}

location ~*  \.(pdf)$ {
   expires 30d;
}

更新 :

我懷疑問題出在位置過期部分的伺服器塊中。

server {
   server_name programlama.tk;

   location /static {
       limit_except GET HEAD POST {
            deny all;
       }
       include yasaklananlar.conf;
       # alias
   }

   location / {
       limit_except GET HEAD POST {
            deny all;
       }
       include yasaklananlar.conf;
       include proxy_params;
       # proxy_pass
   }

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

   location ~*  \.(css|js)$ {
       expires 30d;
   }

   location ~*  \.(pdf)$ {
       expires 30d;
   }

   # server settings

}

如果我刪除伺服器塊中的位置過期部分並重新啟動 Nginx 伺服器,它會很好地顯示圖像。

Nginx 選擇一個位置來處理請求

因此,當添加新的正則表達式 location來設置expires擴展的值時,它會破壞您的配置location /static {...}location / {...}配置。

作為使用locationto set的替代方法expires,您可以使用 amap代替。有關詳細資訊,請參閱此文件

例如:

map $request_uri $expires {
   default                           off;
   ~*\.(jpg|jpeg|png|gif|ico)(\?|$)  365d;
   ~*\.(css|js|pdf)(\?|$)            30d;
}    

server {
   ...
   expires $expires;

   location /static { ... }
   location / { ... }
   ...
}

引用自:https://serverfault.com/questions/939099