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

动态Nginx配置:基于前端主机代理至后端

Nginx动态路由配置:从前端主机名推导后端地址

以下配置可实现根据当前前端域名动态推导后端地址,适配生产环境(无stage后缀)及各类带stage后缀的环境,自动将/api开头的请求路由至对应后端:

server {
    listen 443 ssl;
    # 匹配生产环境域名和所有带stage后缀的前端域名
    server_name my-app-ui.org my-app-ui-*.org;

    # 替换为你的SSL证书实际路径
    ssl_certificate /etc/nginx/ssl/my-app.crt;
    ssl_certificate_key /etc/nginx/ssl/my-app.key;

    # 初始化后端主机地址变量
    set $backend_host "";

    # 处理生产环境:my-app-ui.org → my-app.org
    if ($host = my-app-ui.org) {
        set $backend_host "my-app.org";
    }

    # 处理带stage的环境:提取stage后缀并拼接后端域名
    if ($host ~* ^my-app-ui-(.*)\.org$) {
        set $backend_host "my-app-$1.org";
    }

    # 路由/api开头的请求到后端
    location /api/ {
        # 若无法匹配有效后端地址,返回404
        if ($backend_host = "") {
            return 404;
        }

        proxy_pass https://$backend_host;
        # 传递必要请求头,确保后端正确处理请求
        proxy_set_header Host $backend_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;
    }

    # 处理前端静态资源(根据你的前端部署路径调整root值)
    location / {
        root /var/www/my-app-frontend/dist;
        try_files $uri $uri/ /index.html;
    }
}

关键配置说明

  • 动态后端地址生成:通过$host变量获取当前请求域名,结合正则匹配与字符串替换,自动生成对应后端域名。生产环境直接替换前缀,带stage的环境提取后缀拼接。
  • 请求路由规则:location /api/块专门处理所有以/api开头的请求,通过proxy_pass转发至动态生成的后端地址。
  • 请求头配置:proxy_set_header确保后端能获取正确的主机名、客户端IP等信息,避免后端处理异常。

注意事项

  1. 确保SSL证书覆盖所有需支持的域名(可使用通配符证书*.my-app-ui.org搭配my-app-ui.org)。
  2. 修改root指令值为你的前端静态文件实际部署路径。
  3. 配置完成后执行nginx -t检查语法正确性,无误后执行nginx -s reload重载配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:42:36