LNMP优化wordpress访问

如果你正在使用 LNMP (Linux, Nginx, MySQL, PHP) 环境托管 WordPress,你已经拥有了一个非常高效的基础架构。但默认的安装往往偏向“保守”和“兼容性”。想要让你的网站速度媲美甚至超越 CyberPanel 等集成环境,我们需要进行深度的定制优化。

本文将手把手教你通过 4 个步骤,从 PHP 扩展到 Nginx 核心缓存,全方位提升 WordPress 的响应速度。每一步操作后,你都能感受到性能的提升。


🚀 优化概览

  • 第一步:安装 Redis 与 OPcache 扩展(基础地基)
  • 第二步:调整 OPcache 参数(脚本内存化)
  • 第三步:启用 Redis 对象缓存(减少数据库压力)
  • 第四步:配置 Nginx FastCGI 缓存(静态化核心大招)

第一步:安装必要的 PHP 扩展

LNMP 安装包自带了一个非常方便的脚本 addons.sh。我们需要利用它来安装 Redis(用于数据库查询缓存)和 OPcache(用于 PHP 脚本编译缓存)。

操作步骤:

  1. SSH 登录你的服务器。
  2. 进入 LNMP 安装目录(通常是 /root/lnmp2.0 或类似目录)。
  3. 安装 Redis:
    ./addons.sh install redis

    注:安装过程中询问版本时,选择最新的 Stable(稳定)版即可。

  4. 安装 OPcache:
    ./addons.sh install opcache

    注:如果提示“已安装”请忽略;若未安装,按回车确认安装。


第二步:优化 PHP OPcache 配置

默认的 OPcache 配置较为保守。为了追求极致速度,我们需要让 PHP 脚本尽可能“永久”地驻留在内存中,避免重复编译。

操作步骤:

1. 编辑 PHP 配置文件:

vi /usr/local/php/etc/php.ini

2. 按 / 搜索 [opcache],找到相关配置区域。修改或添加以下数值:

opcache.memory_consumption=256      ; 分配 256M 内存给脚本缓存
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000 ; 缓存的文件数量上限
opcache.revalidate_freq=0           ; 0表示每次请求检查文件更新(生产环境追求极致可设为60)
opcache.validate_timestamps=1       ; 开启时间戳校验
opcache.fast_shutdown=1

3. 保存退出,并重载 PHP 服务:

lnmp php-fpm reload

第三步:在 WordPress 中开启 Redis 对象缓存

这一步将极大减少数据库的查询次数 (Queries),对于内容较多的站点效果立竿见影。

操作步骤:

  1. 登录 WordPress 后台,进入 插件 -> 安装插件
  2. 搜索并安装 Redis Object Cache (作者是 Till Krüss)。
  3. 启用插件,进入 设置 -> Redis,点击 Enable Object Cache

提示: 只要状态显示为 Connected,说明你的数据库查询已经被 Redis 接管了。


第四步:配置 Nginx FastCGI 缓存(核心大招)

这是让速度“起飞”的关键步骤。它的原理是让 Nginx 直接返回已经生成的 HTML 页面,完全跳过 PHP 处理过程,实现毫秒级响应。

我们需要修改两个 Nginx 配置文件。

1. 修改 Nginx 主配置 (nginx.conf)

我们需要定义缓存的存储路径和规则。

  • 编辑文件:vi /usr/local/nginx/conf/nginx.conf
  • http { ... } 块内(但在 server 块之外),加入以下两行:
# 缓存路径:/tmp/wpcache,2级目录,内存索引100m,最大1g,60分钟未使用自动清理
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:100m max_size=1g inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

2. 修改站点配置文件 (vhost)

我们需要告诉 Nginx 哪些页面可以缓存,哪些(如后台、购物车)绝对不能缓存。

  • 编辑文件:vi /usr/local/nginx/conf/vhost/你的域名.conf
  • 步骤 A:设置缓存排除规则
    server { ... } 块的最上方(listen 下面),粘贴以下代码:
# 默认允许缓存
set $skip_cache 0;

# POST请求(提交表单)不缓存
if ($request_method = POST) {
    set $skip_cache 1;
}
# 带有查询参数(?xyz=...)不缓存
if ($query_string != "") {
    set $skip_cache 1;
}
# 后台路径、XMLRPC、Feed 等不缓存
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}
# 登录用户、评论者、Cookie 不缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
  • 步骤 B:应用缓存到 PHP 处理块
    找到处理 PHP 的 location ~ [^/]\.php(/|$) { ... } 块,在里面加入缓存指令。修改后如下所示:
location ~ [^/]\.php(/|$) {
    # ...原有配置保持不变 (如 fastcgi_pass 等)...
    fastcgi_pass  unix:/tmp/php-cgi.sock; # 你的原有配置
    fastcgi_index index.php;              # 你的原有配置
    include fastcgi.conf;                 # 你的原有配置

    # === 新增以下 5 行 ===
    fastcgi_cache WORDPRESS;
    fastcgi_cache_valid 200 301 302 60m;
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
    add_header X-FastCGI-Cache $upstream_cache_status; # 添加调试头以便验证
}

3. 应用更改

最后,创建缓存目录并重启 Nginx 使配置生效:

mkdir /tmp/wpcache
chown -R www:www /tmp/wpcache
nginx -t
lnmp nginx reload

一键优化

    bash <(curl -sL https://light.you17.uk/wp-content/uploads/file/wp-optimize.sh)

📊 如何验证加速效果?

完成以上步骤后,请按以下方法验证:

  1. 打开浏览器隐身模式访问你的网站首页。
  2. F12 打开开发者工具,切换到 Network (网络) 标签。
  3. 点击第一个请求(你的域名),查看 Headers (响应头)
  4. 寻找 X-FastCGI-Cache 字段:
    • MISS: 第一次访问,正在生成缓存。
    • HIT: 第二次刷新,直接命中缓存(此时 TTFB 通常在 50ms 以内,速度极快)。
    • BYPASS: 登录后台时显示,说明规则生效,没有缓存后台。

恭喜!如果看到 HIT,说明你的 LNMP WordPress 网站已经成功开启了服务器级缓存,访问速度将获得质的飞跃。

滚动至顶部