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

Nginx proxy_pass配置后WordPress后台URL缺失/blog报404求助

解决WordPress反向代理后URL丢失/blog路径的问题

这个问题的核心是WordPress不知道它对外的访问路径是example.com/blog,所以生成的后台链接、菜单链接都会跳过/blog前缀,直接指向后端地址,导致404错误。我们需要从WordPress内部配置和Nginx代理规则两方面调整:

1. 修正WordPress的站点URL配置

首先要让WordPress明确它的对外访问地址,推荐通过wp-config.php设置(避免后续被后台设置覆盖):

打开你的WordPress站点根目录下的wp-config.php文件,在/* That's all, stop editing! Happy publishing. */之前添加以下代码:

define('WP_HOME', 'https://example.com/blog');
define('WP_SITEURL', 'http://wp.lunato');
  • WP_HOME:用户实际访问的博客前端地址(带/blog前缀)
  • WP_SITEURL:WordPress核心文件所在的后端真实地址(对应你Nginx配置里的proxy_pass目标)

如果能临时直接访问后端后台(比如wp-example.site.cloud/wp-admin),也可以通过后台设置:进入设置 -> 常规,修改:

  • 站点地址(URL):https://example.com/blog
  • WordPress地址(URL):http://wp.lunato

设置完成后,一定要进入设置 -> 固定链接,直接点击「保存更改」(无需修改规则),这会刷新WordPress的重写规则,确保生成的URL自动带上/blog前缀。

2. 优化Nginx代理配置

你的现有配置能处理首页,但需要补充请求头和重定向修正,让WordPress识别真实请求信息。修改后的配置如下:

location ^~ /blog {
    rewrite /blog/(.*) /$1 break;
    proxy_http_version 1.1;
    
    # 传递真实的请求信息给后端WordPress
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Prefix /blog;
    
    proxy_request_buffering off;
    proxy_pass http://wp.lunato;
    server_name_in_redirect off;
    
    # 修正后端返回的重定向链接,强制带上/blog前缀
    proxy_redirect http://wp.lunato/ https://example.com/blog/;
}

关键优化点:

  • 添加X-Forwarded-*系列请求头,让WordPress获取到前端的真实协议、主机和路径前缀
  • 新增proxy_redirect规则,把后端WordPress返回的重定向(比如登录跳转)从后端地址修正为带/blog的前端地址

3. 验证效果

完成设置后:

  1. 重启Nginx服务:sudo systemctl restart nginx
  2. 访问https://example.com/blog/wp-admin,检查后台所有链接是否都带/blog前缀
  3. 点击博客菜单的页面,确认URL包含/blog且能正常加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:08:14