Docker部署NGINX+PHP-FPM+WordPress遇重定向异常求助
排查与解决WordPress重定向循环(301)问题
1. 核对WordPress站点核心URL配置
直接登录MariaDB容器,执行SQL查询确认wp_options表中的站点地址配置:
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
确保两个字段的值均为https://www.wordpress1.com(与公网访问的域名完全一致,包含HTTPS和www前缀)。若不符,执行更新语句:
UPDATE wp_options SET option_value = 'https://www.wordpress1.com' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'https://www.wordpress1.com' WHERE option_name = 'home';
注意:如果站点使用自定义表前缀,需将wp_options替换为实际前缀(如wp1_options)
2. 确保反向代理头正确传递
WordPress依赖反向代理头识别真实请求的协议与域名,需检查Traefik和NGINX的配置:
- Traefik配置:为wordpress1服务添加头传递中间件,确保信任Docker子网的IP:
并将该中间件绑定到wordpress1的路由规则中。middlewares: wordpress1-headers: headers: forwardedHeaders: trustedIPs: - "172.17.0.0/16" # 根据实际Docker子网调整 customRequestHeaders: X-Forwarded-Proto: "https" - NGINX站点配置:在server块内添加反向代理头支持,并强制告知PHP请求为HTTPS:
server { # 其他基础配置省略 location / { try_files $uri $uri/ /index.php?$args; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; } location ~ \.php$ { fastcgi_pass php-fpm:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; fastcgi_param HTTP_X_FORWARDED_PROTO https; include fastcgi_params; } }
3. 检查Cloudflare SSL与页面规则设置
- 登录Cloudflare控制台,将wordpress1.com的SSL/TLS模式设为严格(Full strict),避免因混合内容触发不必要的重定向。
- 排查针对
www.wordpress1.com的页面规则,确认没有冲突的重定向规则(比如强制非www转www,但WordPress配置的是www地址,导致循环)。
4. 排查插件/主题的自定义重定向
- 重命名站点目录下的
wp-content/plugins为wp-content/plugins-disabled,刷新站点测试是否恢复正常。 - 若问题解决,逐个恢复插件并测试,定位触发重定向的插件。
- 同理,切换到WordPress默认主题(如Twenty Twenty-Four),排查主题内置的重定向逻辑。
5. 确认NGINX重写规则正确
从群晖迁移时若携带了Apache的.htaccess文件,NGINX不会读取该文件,需确保NGINX配置中已包含WordPress核心重写规则:
location / { try_files $uri $uri/ /index.php?$args; }
若原群晖有自定义重定向规则,需转换为NGINX语法添加到站点配置中。
内容的提问来源于stack exchange,提问作者Serfoo
相关产品推荐
相关产品推荐

