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

本地访问Nginx反向代理域名返回301 Moved Permanently问题求助

问题排查方案

核心根因定位方向

你当前的Nginx站点配置本身没有语法问题,且外部访问正常,说明vhost匹配逻辑对外网流量是生效的,异常仅出现在内网本地访问场景,优先排查以下几个常见问题:


1. 检查NAT回流(Hairpin NAT)配置

这是pfSense端口映射场景下内网访问公网域名的最常见故障点:

  • 首先在Nginx虚拟机/容器内执行dig testdomain.com,确认域名解析结果是否为pfSense的公网IP
  • 如果解析结果是公网IP,说明内网机器请求公网IP时,pfSense没有配置回流规则,导致流量无法正确转发到后端Nginx虚拟机,甚至匹配到pfSense自身的Web服务返回301跳转
  • 解决方法:进入pfSense后台,在对应端口转发规则里开启NAT回流,或者单独配置内网NAT回流策略

2. 验证域名解析与vhost匹配逻辑

如果解析结果不是公网IP,而是127.0.0.1或者Nginx虚拟机的本地IP,执行以下命令验证vhost是否正常匹配:

# 手动指定Host头访问本地Nginx,验证vhost配置有效性
curl -v -H "Host: testdomain.com" http://127.0.0.1
# 对比直接访问域名的返回结果
curl -v http://testdomain.com
  • 如果手动指定Host头的请求返回正常WordPress内容,直接访问域名返回301:说明你的Nginx存在优先级更高的默认server块,或者域名解析到了其他未配置testdomain.com vhost的80端口服务
  • 如果两个请求都返回301:查看响应头的Location字段:
    • 若跳转目标为https://testdomain.com:要么是你漏贴了Nginx的HTTP强制跳转HTTPS配置,要么是后端WordPress服务本身配置了HTTP跳转HTTPS,curl默认不跟随跳转,添加-L参数即可验证是否正常:curl -L testdomain.com
    • 若跳转目标为其他域名:检查后端WordPress的站点地址配置是否正确

3. 检查IPv6监听配置

如果dig命令返回了IPv6解析记录,你当前的Nginx配置仅监听了IPv4的80/443端口,没有监听IPv6端口,会导致IPv6请求匹配不到对应vhost,返回默认301响应。
在两个server块中分别添加IPv6监听规则即可:

server {
    listen 80;
    listen [::]:80; # 新增IPv6 80端口监听
    # 其余原有配置保持不变
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2; # 新增IPv6 443端口监听
    # 其余原有配置保持不变
}

修改后执行nginx -s reload重载配置再测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:39:04