You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何利用Nginx Location路径变量实现反向代理单配置动态路由

实现反向代理动态路由匹配的配置方案

这事儿用Nginx的正则变量捕获就能完美解决,我直接给你贴可复用的配置片段,你可以直接整合到你的server块里:

server {
    # 其他server配置(比如listen端口、server_name等)

    location ~^/(?<my_var>[a-zA-Z0-9_-]+)/docs$ {
        # 转发到目标服务
        proxy_pass http://$my_var_business:4000/api/v1/docs;

        # 配置要求的请求头
        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-Host $server_name;
        proxy_set_header X-Forwarded-Proto http;
    }
}

关键细节说明:

  • 这里用了Nginx的命名捕获组(?<my_var>[a-zA-Z0-9_-]+),会自动把请求路径里的<MY-VARIABLE>部分捕获成变量$my_var,后续在proxy_pass里直接拼接成$my_var_business就能生成目标服务地址
  • 正则里的[a-zA-Z0-9_-]+限定了变量的合法字符(字母、数字、下划线、连字符),如果你的变量需要支持其他字符,直接调整这个字符集就行
  • 所有你要求的请求头都已经完整配置,不需要额外修改

额外注意事项:

  • 确保你的Nginx版本在0.8.4及以上(现在主流版本都满足),这个版本才支持命名捕获组语法
  • 配置完别忘了用nginx -t命令校验配置合法性,没问题再重启Nginx生效

内容的提问来源于stack exchange,提问作者Arham Ali Qureshi

火山引擎 最新活动