博客 / WordPress/ WordPress 更换 Redis 缓存后无法登录后台的排查与解决

WordPress 更换 Redis 缓存后无法登录后台的排查与解决

WordPress 更换 Redis 缓存后无法登录后台的排查与解决

问题背景

一个基于 WordPress 二次开发的网站,部署在香港云服务器上。服务器环境为 CentOS 6.8 64位,使用 LNMP 1.5 一键安装包。

网站最初启用了全站 HTTPS (SSL 加密)。后来发现 HTTPS 对 SEO 有一定影响,并且部分地区的用户因网络限制无法访问 HTTPS 网站。

因此,计划移除 HTTPS 并迁移服务器。在过渡期间,同时保留了 HTTP 和 HTTPS 访问。

同时,将对象缓存从 Memcached 更换为 Redis。

问题现象

服务器迁移并更换缓存为 Redis 后,发现通过 HTTP 协议无法登录 WordPress 后台。

即使通过 phpMyAdmin 直接修改 MySQL 数据库中管理员的密码,仍然无法登录。系统总是提示“密码不匹配”或“未启用 Cookie”。

问题分析与解决

经过排查,确定问题根源在于 Redis 对象缓存。Redis 中可能缓存了与用户会话、登录状态或非 HTTPS 环境相关的旧数据,导致登录验证失败。

解决方案: 登录 Redis 并清除所有缓存数据。

操作步骤

  1. 通过 SSH 登录服务器。
  2. 进入 Redis 的安装目录(路径可能因安装方式而异):
    cd /usr/local/redis
  3. 使用 Redis 命令行客户端登录:
    ./bin/redis-cli
  4. 执行命令,清空所有数据库的缓存(注意:此操作会删除 Redis 中所有数据):
    flushall

执行完毕后,退出 Redis 客户端,再次尝试登录 WordPress 后台,即可恢复正常。

补充说明与建议

1. 根本原因: 在从 HTTPS 迁移到 HTTP 并更换缓存系统的复杂操作中,Redis 可能缓存了包含旧协议 (HTTPS) 信息的用户会话、站点 URL 或认证 Cookie,导致在新的 HTTP 环境下验证失败。

2. 更安全的操作: 如果只想清除 WordPress 相关的缓存,而不是全部数据,建议使用 WordPress 的 Redis 缓存插件(如 Redis Object Cache)提供的管理功能进行清除,或在 Redis 命令行中指定只清除 WordPress 使用的数据库(例如:select 0 后执行 flushdb)。

3. 预防措施: 在进行重大环境变更(如协议切换、缓存系统更换)前,应先主动清除旧的缓存数据,以避免此类问题。

4. 环境更新: 原文中提到的 CentOS 6.8 和 LNMP 1.5 版本已较旧。建议考虑将系统升级到受支持的版本(如 CentOS 7/8 或 Rocky Linux/AlmaLinux),并使用更新的软件栈,以获得更好的安全性和兼容性。

发表评论

您的邮箱不会公开。必填项已用 * 标注。