海运的博客

typecho配置nginx使用fastcgi cache缓存加速

发布时间:December 16, 2020 // 分类:Nginx // No Comments

安装nginx依赖扩展,当typecho更新时调用http-cache-purge删除缓存,当命中缓存时调用lua清除set-cookie head,防止缓存的设置cookie header发送给所有人。

1
apt install libnginx-mod-http-cache-purge libnginx-mod-http-lua

http内添加:

1
2
3
4
fastcgi_cache_path /dev/shm/fastcgi_cache_dir levels=1:2 keys_zone=phpcache:100m inactive=30d max_size=200M;
fastcgi_temp_path /dev/shm/fastcgi_cache_dir/temp;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

修改server段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
set $skip_cache 0;
#跳过缓存,post请求
if ($request_method = POST) {
  set $skip_cache 1;
}
#url包含参数
if ($query_string != "") {
  set $skip_cache 1;
}
#指定url
if ($request_uri ~* ^(/admin/|/action/|/search/|/feed/)) {
  set $skip_cache 1;
}
#登录用户
if ($http_cookie ~* "typecho_authCode") {
  set $skip_cache 1;
}
#$uri经过重写后会改变,通过lua提前复制到$permalink
set_by_lua_block $permalink {
  return ngx.var.uri
}
location ~ .*\.php$
{
  try_files $uri =404;
  astcgi_pass  127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
 
  fastcgi_cache_key $scheme$request_method$host$permalink;
  add_header Cache-State $upstream_cache_status;
  fastcgi_cache_bypass $skip_cache;
  fastcgi_no_cache $skip_cache;
  fastcgi_cache phpcache;
  fastcgi_cache_valid 200 301 302 30d;
 
  log_by_lua_file "/etc/nginx/ngx_lua_reqstatus/hook.lua";
  header_filter_by_lua_block {
    --if ngx.status == ngx.HTTP_OK then
      --ngx.header['Cache-State'] = ngx.var.upstream_cache_status
    --end
    if ngx.var.upstream_cache_status == "HIT" then
      ngx.header['Set-Cookie'] = nil
    end
  }
}
 
location ~ /xxx/_clean_cache(/.*) {
    fastcgi_cache_purge phpcache "$scheme$request_method$host$1";
}

typecho清除缓存插件:
https://github.com/typecho-fans/plugins/tree/master/Ncache
typecho默认在用户评论后会在cookie内设置用户名和邮箱信息,并在服务端读取cookie在html内写入相关信息,这样用户信息被缓存所有人都可以看到,可参考下面方法修改模板用js读取cookie内用户信息。
https://cuojue.org/read/typecho_comments_author_javascript.html

标签:nginx, cache, typecho, 缓存

评论已关闭

分类
最新文章
最近回复
  • rer: 感谢分享!~
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...