使用Nginx的FastCGI Cache缓存给ZBlogPHP网站提速

2023-07-24 14:20:31 浏览数 (1)

fastcgi_cache是nginx的一个缓存模块,能够将动态页面(例如:PHP)缓存起来,以便用户下次访问时直接返回

它的原理就是,在用户访问网站时,通过将URL及其相关内容生成key,然后对key用md5算法进行hash计算,最终以配置的参数获得缓存文件路径

开始操作

那么接下来,我就直接上代码(注意:以下代码需要根据你原来的配置文件修改

代码语言:javascript复制
# 下面这几条语句可以放在nginx.conf供所有站点使用
# /tmp/cache/zblog 缓存目录:填写自己的目录,权限要给777
# levels  可以就这样
# keys_zone  名称:大小,注意:这里的大小指的是,能够存放的key的字节数的大小。
#                    例如:1m=1024*1024字节,就是所有key加起来不能超过这个数
# inactive 缓存文件在一段时间内没有访问则会被删除
#              d - 天、h - 小时、m - 分钟
# max_size 设置缓存的总大小:如果是多个站点,可以设置大一点
fastcgi_cache_path /tmp/cache/zblog levels=1:2 keys_zone=zblog:1m inactive=1d max_size=100m;
fastcgi_temp_path /tmp/cache/zblog/tmp; # 需要与fastcgi_cache_path设置的缓存目录在同一分区
fastcgi_cache_key "$scheme$request_method$host$request_uri"; # 生成缓存key
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; # 如果不加,若php返回这些头,缓存可能会失效
server {
    ...
    # 跳过缓存开关,1为跳过缓存,0为不跳过缓存
    set $skip_cache 0;
    
    # 不缓存后台目录
    if ($request_uri ~* "^/zb_(users|system)") {
      set $skip_cache 1;
    }
    
    # 动态查询不缓存(可选)
    if ($query_string != '') {
      set $skip_cache 1;
    }
    
    # 登录用户不缓存(可选)
    if ($http_cookie ~* "(^|;s*)username(.*?)=(.*?)(;|$)") {
      set $skip_cache 1;
    }
    
    # 其它选项,请根据自身情况而定
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #include enable-php-72.conf;
    这里应该参考原来的配置。特别是fastcgi_pass参数
    location ~ [^/].php(/|$) {
		   try_files $uri =404;
		   fastcgi_pass  unix:/tmp/php-cgi-72.sock;
		   fastcgi_index index.php;
		   include fastcgi.conf;
		   include pathinfo.conf;
		   
		   fastcgi_cache zblog; # 这个地方要填写上面fastcgi_cache_path的keys_zone参数设置的名称

		   # 设置需要的状态码以及缓存时间
		   fastcgi_cache_valid 200 1h;
		   fastcgi_cache_valid 301 302 10m;
		   fastcgi_cache_valid 404 1m;
		  
		   # 用于调试,上线后可以注释掉
		   # MISS为未命中缓存,HIT为命中缓存
		   add_header X-Cache "$upstream_cache_status";
		   
		   fastcgi_cache_bypass $skip_cache;
		   fastcgi_no_cache $skip_cache;
    }
    
    #这个地方是用来清除缓存用的
    location ~ ^/purge(/.*)$ {
      allow 127.0.0.1;
      allow 你的服务器外网ip;
      fastcgi_cache_purge zblog "$scheme$request_method$host$1";
    }

    #PHP-INFO-END
    ...
}

0 人点赞