Nginx无法连接Docker中PHP-FPM环境的WordPress问题求助
问题排查与解决步骤
1. 优先解决「Connection refused」错误(核心连通性问题)
这个错误说明Nginx容器无法连接到WordPress容器的9000端口,按以下步骤排查:
1.1 确认容器网络互通
- 确保Nginx和WordPress容器处于同一个Docker自定义网络中(默认桥接网络可能存在解析问题):
- 查看现有网络:
docker network ls - 检查容器所属网络:
docker inspect nginx-container | grep Networks和docker inspect wordpress-container | grep Networks - 如果不在同一网络,创建并加入:
docker network create wp-network docker network connect wp-network nginx-container docker network connect wp-network wordpress-container
- 查看现有网络:
- 测试连通性:进入Nginx容器,执行
ping wordpress或telnet wordpress 9000,确认能解析并连通端口。
1.2 检查PHP-FPM监听配置
WordPress容器的PHP-FPM默认可能仅监听127.0.0.1:9000(仅容器内部可访问),需修改为监听所有地址:
- 进入WordPress容器:
docker exec -it wordpress-container bash - 编辑PHP-FPM配置文件:
vi /usr/local/etc/php-fpm.d/www.conf - 找到
listen = 127.0.0.1:9000,修改为:listen = 0.0.0.0:9000 - 重启PHP-FPM或容器:
docker restart wordpress-container
2. 解决「GET /index.php 301」重定向问题
301通常是WordPress站点URL配置与实际访问地址不匹配导致,按以下处理:
2.1 修正WordPress站点URL
通过修改wp-config.php强制适配当前访问地址:
- 挂载或进入WordPress容器的网站目录,编辑
wp-config.php,添加以下代码:define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']); define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); define('FORCE_SSL_ADMIN', false); # 若未配置HTTPS,禁用强制SSL - 若能访问WordPress数据库,修改
wp_options表的siteurl和home字段为你的EC2公网IP/域名(带http://)。
2.2 优化Nginx配置细节
调整Nginx配置,确保文件路径和请求传递正确:
- 确保Nginx容器挂载了WordPress的网站目录,比如启动时添加:
这样-v /path/to/wordpress/html:/usr/share/nginx/html$document_root才能正确指向WordPress文件,PHP-FPM才能找到对应的脚本。 - 补充Nginx配置的
index指令,避免默认重定向:location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; } - 检查
fastcgi_params中是否包含HTTP_HOST参数(默认应该有,若没有手动添加):fastcgi_param HTTP_HOST $host;
3. 日志验证
- 查看Nginx错误日志:
docker exec nginx-container tail -f /var/log/nginx/error.log,确认是否还有连接拒绝信息。 - 查看WordPress容器的PHP-FPM日志:
docker exec wordpress-container tail -f /var/log/php8.0-fpm.log,检查是否有启动或请求处理错误。
内容的提问来源于stack exchange,提问作者AlwaysNewbie
相关产品推荐
相关产品推荐

