Nginx
Rails - Nginx 不記憶體圖像
我有一個 VPS,我正在使用 Nginx 和 Unicorn 執行我的 Rails 應用程序。我成功地將過期標頭添加到 JS 和 CSS 文件,但是我不能強制 Nginx 也記憶體圖像(根據 YSlow 和 Google PageSpeed Insights)。
這是我的伺服器塊:
server { listen 80; root /home/rails/public; server_name _; index index.htm index.html; location / { try_files $uri/index.html $uri.html $uri @app; } location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ { try_files $uri @app; } location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires max; } }
最後一段程式碼是我如何實現 CSS 和 JS 的 chaching,但它不適用於圖像。我究竟做錯了什麼?我應該在其他地方做一些額外的改變嗎?
非常感謝!
您有兩個匹配圖像的位置塊:
location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ { try_files $uri @app; }
和
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires max; }
Nginx 將在第一個匹配的正則表達式位置塊處停止,因此第二個位置塊永遠不會用於jpg、jpeg、png、gif 和 ico 文件。
更新:回退記憶體的詳細資訊
server { listen 80; root /home/rails/public; server_name _; index index.htm index.html; location / { try_files $uri/index.html $uri.html $uri @app; } location ~* ^.+\.(jpg|jpeg|png|gif|ico|css|js)$ { expires max; try_files $uri @app; } location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ { try_files $uri @app; } location @app { if ($uri ~* ^.+\.(jpg|jpeg|png|gif|ico|css|js)$) { expires max; } proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } }