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

AWS EC2子域api.mydomain.com映射后端3010端口失败求助

问题排查与解决方案

1. 先确认DNS解析正确性

首先验证子域api.mydomain.com是否已正确指向EC2实例IP(1.2.33.44):

  • 在本地终端执行命令:
    nslookup api.mydomain.com
    # 或
    dig api.mydomain.com
    
  • 如果返回的IP不是1.2.33.44,先到域名服务商后台添加/更新A记录,将api子域指向该IP。

2. 检查Nginx配置文件(mydomain.conf)

核心问题大概率出在Nginx的server块匹配逻辑,需确保主域和子域有独立的配置块,且子域的proxy_pass指向后端3010端口。

正确配置示例:

# 主域指向React前端(3000端口)
server {
    listen 80;
    server_name mydomain.com www.mydomain.com;

    location / {
        # 若前端是Docker容器,替换为容器名+端口(如http://react-app:3000)
        proxy_pass http://localhost:3000;
        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;
    }
}

# 子域指向NestJS后端(3010端口)
server {
    listen 80;
    server_name api.mydomain.com;

    location / {
        # 若后端是Docker容器,替换为容器名+端口(如http://nest-app:3010)
        proxy_pass http://localhost:3010;
        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;
        # 适配后端API的额外配置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

3. 验证Docker网络与端口映射

如果前端/后端都是Docker容器,需确保:

  • Nginx容器与后端容器在同一Docker网络中(通过docker-compose.yaml的networks配置)
  • proxy_pass地址使用容器名+端口而非localhost(localhost在Nginx容器内指向容器自身,而非宿主机)

示例docker-compose.yaml配置片段:

version: '3.8'
services:
  react-app:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - app-network

  nest-app:
    build: ./backend
    ports:
      - "3010:3010"
    networks:
      - app-network

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./mydomain.conf:/etc/nginx/conf.d/mydomain.conf
    networks:
      - app-network
    depends_on:
      - react-app
      - nest-app

networks:
  app-network:
    driver: bridge

4. 重载Nginx配置并验证

  • 进入Nginx容器,检查配置语法:
    nginx -t
    
  • 若语法无错误,重载配置:
    nginx -s reload
    

5. 排除缓存与安全组问题

  • 清除浏览器缓存,用隐私模式访问api.mydomain.com测试
  • 检查EC2安全组:确保入站规则允许80(HTTP)/443(HTTPS)端口的公网流量,后端3010端口无需开放公网(Nginx通过内部网络代理访问)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:42:58