Ubuntu16.04下Nginx反向代理WordPress时重定向而非代理问题求助
解决Nginx反向代理Apache WordPress时的截断重定向问题
我之前碰到过好多次这种情况,大概率是WordPress没拿到正确的请求域名,或者Apache虚拟主机的配置和实际访问逻辑不匹配,导致重定向时URL被截断。咱们一步步来排查解决:
第一步:先把Apache的端口和虚拟主机配置捋顺
首先要明确:Nginx已经占了80端口,Apache绝对不能再监听80,得改成其他端口(比如8080),不然俩服务会冲突。
- 修改Apache的监听端口:编辑
/etc/apache2/ports.conf,把Listen 80改成Listen 8080,保存后重启Apache:sudo systemctl restart apache2 - 检查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如果出错,也会导致重定向问题。可以通过两种方式修改:
- 后台修改:如果能登录WordPress后台,进入
设置→常规,把WordPress地址(URL)和站点地址(URL)都改成http://example.com - 直接改配置文件:如果后台进不去,编辑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
相关产品推荐
相关产品推荐

