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

切换数据中心时DNS传播阶段的Nginx子域名路由问题

基于Nginx反向代理的多服务路由架构实现

我目前部署了三台服务器来支撑业务服务,具体分工和配置如下:

服务器架构明细

  • API数据服务服务器:IP为 11.111.11.11,专门负责处理所有业务数据接口请求,提供数据查询、提交等核心服务
  • 静态资源服务服务器:IP为 22.222.22.22,主要托管前端静态资源,包括HTML页面、CSS样式、JavaScript脚本以及图片、字体等文件
  • Nginx反向代理服务器:IP为 33.333.33.33,作为整个服务集群的流量入口,核心作用是根据请求的子域名和协议,将请求精准路由到对应的后端服务(甚至是自身的特定服务)

DNS配置说明

我为三个域名/子域名配置了A类型DNS记录,全部指向Nginx反向代理服务器的IP 33.333.33.33:

  • example.com
  • www.example.com
  • api.example.com

这样用户无论访问哪个域名,请求都会先到达Nginx服务器,再由它进行转发处理。

Nginx核心路由配置示例

下面是我实际使用的Nginx配置片段,完美实现了上述路由逻辑:

# 处理api.example.com的请求,转发至API数据服务服务器
server {
    listen 80;
    listen 443 ssl;
    server_name api.example.com;

    # HTTPS证书配置(如果启用了SSL)
    ssl_certificate /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http://11.111.11.11;
        # 传递必要的请求头给后端服务
        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;
    }
}

# 处理example.com和www.example.com的请求,转发至静态资源服务服务器
server {
    listen 80;
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http://22.222.22.22;
        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;

        # 静态资源优化配置(可选)
        expires 7d;
        add_header Cache-Control "public, max-age=604800";
    }
}

# 可选:配置Nginx自身的监控或管理服务
server {
    listen 80;
    server_name localhost;

    location /nginx-status {
        stub_status on;
        # 仅允许本地访问监控页面
        allow 127.0.0.1;
        deny all;
    }
}

一些实用的注意事项

  • 确保Nginx服务器能正常连通两台后端服务器的对应端口(默认HTTP是80,如果后端用了自定义端口,记得在proxy_pass里加上端口号,比如http://11.111.11.11:8080)
  • 建议使用通配符SSL证书(*.example.com),这样所有子域名都能共用一套证书,减少维护工作量
  • 如果后续需要扩容后端服务,可以直接在Nginx配置中添加负载均衡规则,比如使用upstream模块实现多服务器的流量分发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:33:38