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

Nginx同域重定向配置:实现example.net跳转至/test/page

根域名访问自动跳转同域指定路径的实现方案

此前配置未生效的常见原因

  • 修改proxy_pass为http://localhost:8090/test/page:Nginx反向代理的路径拼接规则下,带URI的proxy_pass会把匹配location后的剩余路径拼接到指定URI后,不仅会把根路径请求代理到目标路径,还会把所有业务路径的请求都错误拼上/test/page前缀,触发Tomcat路由404,表现和配置未生效一致。
  • 编写return/rewrite规则不生效:大多是没做精准路径匹配,规则被其他location块覆盖,或是改完配置没执行重载,或是301重定向被浏览器缓存,误以为规则没有生效。

正确配置实现

需求为:仅当用户直接访问根域名(即请求路径为/)时,自动跳转到同域下/test/page路径,其余原有业务路径的代理逻辑不受影响。
在现有server块中新增精准匹配根路径的location块即可,完整配置参考:

server {
    listen 443 ssl;
    server_name example.net;

    access_log      /var/log/nginx/example.net.ssl.access.log;
    error_log       /var/log/nginx/example.net.ssl.error.log;

    ssl_certificate         /etc/letsencrypt/live/example.net/cert.pem;
    ssl_certificate_key     /etc/letsencrypt/live/example.net/privkey.pem;

    # 精准匹配根路径,仅触发根域名访问的重定向
    location = / {
        # 302为临时重定向,需永久生效可替换为301
        return 302 /test/page;
    }

    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8090;
    }
}

配置生效操作

  1. 先校验Nginx配置语法是否正确,执行命令:nginx -t
    看到测试成功类的输出即说明语法无错。
  2. 重载Nginx让配置生效:nginx -s reload
  3. 验证效果:
    • 直接访问example.net,会自动跳转至example.net/test/page
    • 访问其他原有业务路径,仍会正常走原有反向代理逻辑,不会被重定向。

注意事项

  • 不建议用正则rewrite做全局路径跳转,容易误伤正常业务请求
  • 不建议通过修改proxy_pass路径的方式实现跳转,会破坏原有反向代理的路径拼接规则,引发接口404
  • 如果之前测试过重定向规则,记得清除浏览器缓存再验证,避免浏览器缓存旧的重定向结果干扰判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 04:15:07