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

如何配置Nginx实现动态三级域名与端口转发?

修复后的Nginx配置方案

原配置的核心问题是API请求转发时固定了目标域名,没保留请求的三级域名,导致后端Django无法识别租户。以下是调整后的完整配置:

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  root /var/www/example;
  index index.html index.htm;

  server_name example.com *.example.com;

  # 静态资源直接映射到根目录对应文件夹,合并规则更简洁
  location ~ ^/(css|js|static)/ {
    try_files $uri $uri/ =404;
  }

  # API请求动态转发到对应三级域名的8000端口,保留完整路径
  location /api/ {
    proxy_pass http://$host:8000;
    # 传递必要的请求头给后端,确保Django能识别租户和请求来源
    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-Proto $scheme;
  }

  # React单页应用路由 fallback,支持前端路由跳转
  location / {
    try_files $uri $uri/ /index.html;
  }
}

关键修改说明:

  • 静态资源规则合并:用正则表达式把css、js、static三个目录的规则合并,减少冗余配置
  • 动态API转发:用$host变量替换固定域名,这样任意三级域名(比如clientA.example.com)的/api请求都会转发到clientA.example.com:8000,后端Django就能通过Host头识别对应的租户
  • 完善请求头传递:添加proxy_set_header配置,把原请求的Host头、客户端IP等信息传递给Django,避免后端获取不到正确的请求来源
  • 修复前端路由支持:根路径的try_files调整为$uri $uri/ /index.html,确保React的前端路由(比如/dashboard这类非根路径)能正常fallback到index.html,不会返回404

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:39:32