背景

WP Super Cache 是一个易操作、傻瓜式的缓存插件。它由 WordPress 官方团队进行维护与开发,故而有较高的可靠性。同时它通过生成 HTML 静态文件,达成了为我们缓存的目的。插件提供了三种缓存模式,这里我们介绍 Mod_Rewrite 模式。我们需要进入命令行修改 Nginx 的配置文件。

编辑配置文件

我使用的是 Oneinstack 安装脚本,环境为 LNMP。所以进入 Nginx 目录,并编辑你的虚拟主机配置文件:

cd /usr/local/nginx/conf/vhost
nano xxx.conf

在配置文件尾部加入如下配置:

# WP SUPER CACHE
  set $cache_uri $request_uri;
# POST requests and urls with a query string should always go to PHP
  if ($request_method = POST) {
    set $cache_uri 'null cache';
  }
  if ($query_string != "") {
    set $cache_uri 'null cache';
  }
# Don't cache uris containing the following segments
  if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
    set $cache_uri 'null cache';
  }
# Don't use the cache for logged in users or recent commenters
  if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
    set $cache_uri 'null cache';
  }
  location / {
    try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php$is_args$args;
  }

需要注意的是,如果你在创建虚拟主机时选择了 WordPress 的重写规则,还需要添加如下内容:

#wordpress rewrites
  rewrite /wp-admin$ $scheme://$host$uri/ permanent;
  location ~* ^/wp-content/uploads/.*\.php$ {
    deny all;
  }

同时在上方注释掉下面这一行配置:

include /usr/local/nginx/conf/rewrite/wordpress.conf;

最后重新启动 Nginx 服务即可

service nginx restart

参考资料