先说说我在nginx.conf
里http
里的配置,如下:
fastcgi_cache_path /var/domain_cache levels=1:2 keys_zone=domain:100m inactive=1d max_size=5G;
fastcgi_temp_path /var/cache_temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri"; #定义哪些情况下用过期缓存
fastcgi_cache_use_stale error timeout invalid_header http_500 http_503 updating;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie Vary;
然后是我的域名myhost.conf
文件内的Fastcgi_cache有关配置,如下:
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache-Status $upstream_cache_status;
add_header X-Cache "$upstream_cache_status From $host";
fastcgi_cache domain;
fastcgi_cache_valid 200 301 302 1d;
}
location ~ /purge(/.*) {
allow 127.0.0.1;
allow "111.112.113.114";
deny all;
fastcgi_cache_purge domain "$scheme$request_method$host$1";
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
location = /robots.txt { access_log off; log_not_found off; }
location ~ /\. { deny all; access_log off; log_not_found off; }
WordPress 里安装了nginx-helper插件,通过tailf命令查看这个插件生成的.log文件一直是如下显示:
至于说浏览器里X-Cache查看是否MISS/HIT的根本就不显示,也就是说缓存根本就没有生成。求高手赐教呀!已经折腾我好几天了都!郁闷呀!
发现始终都有一个
的head标记存在,怎么去除这个标记呢?是不是这个造成的fastcgi_cache不能缓存呢?
时隔N年了,这个问题终于解决了!问题就出在这个Pragma上了,在Nginx里隐藏这个head即可让fastcgi cache生效了!
可参考【开启 Nginx 的 FastCGI Cache 缓存,加速 WordPress 伪静态页面】