前言
在使用 1Panel Docker
容器环境下部署 WordPress 并启用 Redis Object Cache
时,常见报错如下:
Connection refused [tcp://127.0.0.1:6379]
这是因为 Docker 容器的网络隔离机制导致的。每个容器都有独立的 IP 地址,因此容器内的 127.0.0.1
或 localhost
仅指向自身,无法直接访问其他容器中的服务(如 MySQL、Redis、Memcached 等)。
解决方案
1.配置 WordPress 连接 Redis
编辑 WordPress
根目录下的 wp-config.php
文件,添加以下 Redis 配置:
/** Redis Object Cache */
define('WP_REDIS_HOST', 'redis'); // Redis 容器名称或服务名
define('WP_REDIS_PORT', 6379); // Redis 默认端口
define('WP_REDIS_DATABASE', 0); // Redis 数据库索引
define('WP_REDIS_PASSWORD', '你的Redis密码'); // Redis 密码
注意:redis 是 Redis 容器在 Docker 网络中的名称(通常在 Docker Compose 文件中定义)。
2.修复 Object Cache 插件的连接问题
如果启用 Redis Object Cache
后仍提示 Connection refused
,需要修改插件内部连接参数:
- 找到 WordPress 插件目录下的
object-cache.php
文件,例如:
/opt/1panel/apps/wordpress/wordpress/data/wp-content/object-cache.php
- 在约 第
620
行,找到build_parameters()
方法,替换为:
protected function build_parameters() {
$parameters = [
'scheme' => 'tcp',
'host' => 'redis', // Redis 容器名称
'port' => 6379, // Redis 端口
'password' => '你的Redis密码', // Redis 密码
];
return $parameters;
}
保存文件后,刷新 WordPress 后台,Redis Object Cache 应可正常连接。
3.注意事项
- 确保 Redis 容器已经启动,并且端口对 WordPress 容器开放。
- 如果使用
Docker Compose
,可以通过容器名称互相访问,而无需使用127.0.0.1
。 - Redis 密码配置必须与 Redis 实际设置一致,否则连接会被拒绝。
通过以上步骤,即可解决 WordPress 在 Docker 容器中启用 Redis Object Cache
时的“Connection refused”
问题,同时保证缓存功能正常运行。