You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu16.04下Nginx反向代理WordPress时重定向而非代理问题求助

解决Nginx反向代理Apache WordPress时的截断重定向问题

我之前碰到过好多次这种情况,大概率是WordPress没拿到正确的请求域名,或者Apache虚拟主机的配置和实际访问逻辑不匹配,导致重定向时URL被截断。咱们一步步来排查解决:

第一步:先把Apache的端口和虚拟主机配置捋顺

首先要明确:Nginx已经占了80端口,Apache绝对不能再监听80,得改成其他端口(比如8080),不然俩服务会冲突。

  1. 修改Apache的监听端口:编辑/etc/apache2/ports.conf,把Listen 80改成Listen 8080,保存后重启Apache:sudo systemctl restart apache2
  2. 检查Apache虚拟主机配置,确保ServerName和实际访问域名一致,示例配置如下:
<VirtualHost *:8080>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/wordpress

    <Directory /var/www/wordpress>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
    CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>

第二步:修正Nginx反向代理配置,传递正确请求头

Nginx反向代理时,必须把用户真实的访问域名、IP等信息传给Apache,不然WordPress会误以为自己是在127.0.0.1:8080上运行,生成错误的重定向URL。正确的Nginx配置应该是这样:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        # 核心:传递真实请求头给Apache和WordPress
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # 修正可能带端口的重定向响应
        proxy_redirect http://127.0.0.1:8080/ http://$host/;
        proxy_redirect http://example.com:8080/ http://$host/;
    }

    # 可选:静态资源直接让Nginx处理,提升性能
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        root /var/www/wordpress;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

第三步:强制指定WordPress的站点URL

就算前面配置都对,WordPress自动检测的站点URL如果出错,也会导致重定向问题。可以通过两种方式修改:

  1. 后台修改:如果能登录WordPress后台,进入设置→常规,把WordPress地址(URL)和站点地址(URL)都改成http://example.com
  2. 直接改配置文件:如果后台进不去,编辑WordPress根目录下的wp-config.php,添加以下两行:
define('WP_HOME', 'http://example.com');
define('WP_SITEURL', 'http://example.com');

第四步:收尾测试

配置完后记得:

  • 重启Nginx:sudo systemctl restart nginx
  • 重启Apache:sudo systemctl restart apache2
  • 清空浏览器缓存,或者用隐私窗口访问http://example.com,避免旧的重定向缓存干扰测试

如果还是有问题,可以去看日志找线索:

  • Nginx错误日志:/var/log/nginx/error.log
  • Apache WordPress错误日志:/var/log/apache2/wordpress_error.log
    看看日志里的301/302重定向记录,就能知道是哪一步的URL出了问题。

内容的提问来源于stack exchange,提问作者EnterSB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:20:55