私はこの問題に対する実用的な答えをどこでも探しましたが、どれもうまくいかないようです。非常に長い投稿についても申し訳ありませんが、これについては助けを求める必要があります。私はできるだけ詳細にしようとしました。
ソースからビルドしたCentOS7にngx_pagespeedがインストールされたnginxWebサーバーがありますが、私の人生の間、cache-control
またはexpire
ヘッダーを機能させることができません。私はここ、StackOverflow、nginx wikiで提案されたすべての「解決策」を検索して試しましたが、人々が「機能」するさまざまな方法のおそらく50の異なるページを見てきました。
Ngx_pagespeedには独自のキャッシュがあることがわかりましたが、私のサイトはその恩恵を受けていないようです。そのため、メディア(jpg、gifなど)用に独自のcache-control
ヘッダーとexpire
ヘッダーを設定しようとしています。しかし、過去2日間、私が得るのは次のことだけです。
curl -Iからの出力
HTTP/2 200
server: nginx
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
date: Tue, 26 Jun 2018 02:02:46 GMT
x-page-speed: Powered By ngx_pagespeed
cache-control: max-age=0, no-cache
私はこれにとてもイライラしています。何をしようとしても何も手に入らない
cache-control: max-age=0, no-cache
カールから。
以下は私の設定ファイルです。私のサイトの設定は/etc/nginx/sites-available/conf
にあり、nginxの設定ファイルは/etc/nginx/nginx.conf
にあります。
nginx.conf:
user centos;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
include /etc/nginx/sites-enabled/*;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local]
"$request" '
#'$status $body_bytes_sent "$http_referer" '
#'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
}
nginx.conf
の残りの部分は関連性がないと思います。とにかくデフォルトですべてコメントアウトされています。このファイルはあらゆる種類の間違いである可能性があります。ここに追加してみたところ、他の人のために「修正」されたことがわかりました。
site.conf
# don't send the nginx version number in error pages and Server header
server_tokens off;
server {
listen 80;
server_name my_site;
return 301 https://www.my_site.org;
root /home/centos/site_folder/public;
location / {
add_header Cache-Control "public";
expires 1d;
proxy_pass http://site_ip:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
#proxy_buffering on;
#proxy_ignore_headers "Set-Cookie";
#proxy_hide_header "Set-Cookie";
proxy_buffering on;
#proxy_ignore_headers Expires;
#proxy_ignore_headers X-Accel-Expires;
#proxy_ignore_headers Cache-Control;
#proxy_ignore_headers Set-Cookie;
#proxy_hide_header X-Accel-Expires;
#proxy_hide_header Expires;
#proxy_hide_header Cache-Control;
#proxy_hide_header Pragma;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 15d;
}
location ~* \.(jpg|jpeg|gif|png)$ {
expires 365d;
}
location ~* \.(pdf|css|html|js|swf)$ {
expires 30d;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /my/certs/are/here.crt;
ssl_certificate_key /my/certs/are/here.key;
# intermediate configuration
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# enable session resumption to improve https performance
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate
/my/certs/are/here.crt;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_proxied any;
gzip_types text/plain text/css application/json
application/javascript application/x-javascript text/xml
application/xml application/xml+rss text/javascript image/x-
icon image/bmp image/svg+xml;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_buffers 16 8k;
include /etc/nginx/snippets/security-headers.conf;
server_name my_site.org;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
#root /home/centos/my_site.org/public;
try_files $uri $uri/ /index.html?$args;
index index.html;
}
location ~*\.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
location /page1 {
default_type "text/html";
alias /home/centos/my_site.org/public/page1.html;
}
location /page2 {
default_type "text/html";
alias /home/centos/my_site.org/public/page2.html;
}
location ~* \.
(jpeg|jpg|JPG|gif|png|ico|cur|gz|svg|svgz|webp)$ {
#root /home/centos/my_site.org/public;
#include /etc/nginx/snippets/security-headers.conf;
try_files $uri $uri/ /$1/$2 =404;
#access_log off;
#log_not_found off;
}
#location ~* \.(mp3|mpeg|mpg|mp4|ogg|ogv|webm|webp|htc)$ {
#root /home/centos/my_site.org/public;
#include /etc/nginx/snippets/security-headers.conf;
#try_files $uri $uri/ /$1/$2 =404;
#proxy_cache_valid any 30d;
#access_log off;
#add_header Cache-Control "public";
#}
#location ~* \.(|css|js)$ {
#expires 7d;
#root /home/centos/my_site.org/public;
#include /etc/nginx/snippets/security-headers.conf;
#try_files $uri $uri/ /$1/$2 =404;
#access_log off;
#add_header Cache-Control "public";
#}
##
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed FileCacheSizeKb 102400;
pagespeed FileCacheCleanIntervalMs 3600000;
pagespeed FileCacheInodeLimit 500000;
pagespeed Domain https://www.my_site.org;
pagespeed XHeaderValue "Powered By ngx_pagespeed";
pagespeed HonorCsp on;
pagespeed LowercaseHtmlNames on;
#pagespeed EnableFilters extend_cache;
#pagespeed ModifyCachingHeaders off;
# Image related
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters convert_gif_to_png;
pagespeed EnableFilters convert_jpeg_to_progressive;
pagespeed EnableFilters strip_image_color_profile;
pagespeed EnableFilters strip_image_meta_data;
pagespeed EnableFilters jpeg_subsampling;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters responsive_images,resize_images;
pagespeed EnableFilters resize_mobile_images;
pagespeed EnableFilters recompress_images;
# code related
pagespeed EnableFilters collapse_whitespace;
# JS related
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters combine_javascript;
# CSS related
pagespeed EnableFilters rewrite_css;
pagespeed EnableFilters prioritize_critical_css;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters outline_css;
pagespeed EnableFilters flatten_css_imports;
# 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 ~* \.(jpg|jpeg|gif|png|js|css)$ {
#add_header Cache-Control "public, max-age=600";
#}
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
}
これらの構成は機能し、nginx -t
を渡しますが、キャッシュは機能しません。コメントアウトしたコードをすべて残したので、私が行ったこと/試したことを確認できます。ここでの助けは大歓迎です。必要な詳細を見逃した場合は、お知らせください。ありがとうございました!
Tero Kilkanen からの指示により、メディアがホストされているS3バケットからcache-control
ヘッダーとexpires
ヘッダーを設定できましたが、nginxウェブサーバーからではありませんでした。 。
ありがとうございました!