Nginx
Nginx 圖像頭記憶體未更新
我在https://www.example.com/img/bart-had-a-groove.gif有一個圖像文件
這是我站點配置中唯一的記憶體塊,全域 nginx.conf 中沒有記憶體設置。
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { expires 1M; access_log off; add_header Cache-Control "public, no-transform, max-age=2628000"; }
現在,您可以看到我的標題設置為
Cache-Control "public, no-transform, max-age=2628000";
,但是如果您將圖像捲曲,例如curl -X GET -I https://www.example.com/img/bart-had-a-groove.gif
您會得到:HTTP/1.1 200 OK Content-Type: image/gif Connection: keep-alive Server: nginx/1.13.9 Content-Length: 771510 Last-Modified: Fri, 17 Feb 2017 17:26:23 GMT ETag: "58a7323f-bc5b6" Pragma: public Cache-Control: public Accept-Ranges: bytes Date: Mon, 19 Mar 2018 21:49:33 GMT Expires: Wed, 18 Apr 2018 21:49:33 GMT
您可以看到
Cache-Control: public
與配置不匹配。它缺少了no-transform, max-age=2628000
一部分。
systemctl stop nginx && systemctl start nginx && systemctl reload nginx
每次改變我都會跑。更新 伺服器塊的其餘部分:
server { listen 80; listen 443; server_name example.com; return 301 https://www.$server_name$request_uri; } server { listen 80; listen 443 ssl http2; root /var/www/example.com/htdocs/; index index.html index.htm; server_name www.example.com; location / { autoindex on; try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_split_path_info ^(.+?\.php)(|/.*)$; # Security note: If you're running a version of PHP older than the # latest 5.3, you should have "cgi.fix_pathinfo = 0;" in php.ini. # See http://serverfault.com/q/627903/94922 for details. include fastcgi_params; # Block httpoxy attacks. See https://httpoxy.org/. fastcgi_param HTTP_PROXY ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param QUERY_STRING $query_string; fastcgi_intercept_errors on; # PHP 5 socket location. #fastcgi_pass unix:/var/run/php5-fpm.sock; # PHP 7 socket location. fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { #expires 1M; access_log off; add_header Cache-Control "public, no-transform, max-age=2628000"; } pagespeed on; # Needs to exist and be writable by nginx. Use tmpfs for best performance. pagespeed FileCachePath /var/ngx_pagespeed_cache; # Ensure requests for pagespeed optimized resources go to the pagespeed handler # and no extraneous headers get set. location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon$" { } }
您正在使用兩個相關的配置指令,關於“Cache-Control”標頭(見下文)。我建議僅使用add_header,因為您欣賞“Cache-Control”標頭的“no-transform”指令。
過期1M;
–> 將設置標題“Cache-Control”和“Expires”。
啟用或禁用添加或修改“Expires”和“Cache-Control”響應標頭…
add_header Cache-Control “public, no-transform, max-age=2628000”;
–> 將手動設置“Cache-Control”標頭。