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

如何通过不同子域名访问同一EC2实例上不同端口的容器应用

子域名映射到EC2容器应用的配置方案

一、域名解析配置

将三个子域名指向你的EC2实例公网IP(优先用A记录,比CNAME更高效):

  • 新增A记录:admin.mydomain.com → EC2实例公网IP
  • 新增A记录:cs.mydomain.com → EC2实例公网IP
  • 新增A记录:member.mydomain.com → EC2实例公网IP

二、EC2安全组调整

在EC2控制台修改实例的安全组规则,添加入站规则:

  • 允许HTTP(80端口)、HTTPS(443端口)的公网访问(来源可设为0.0.0.0/0或指定IP范围)

三、安装并配置Nginx反向代理

1. 安装Nginx

根据EC2实例系统选择对应命令:

  • Ubuntu/Debian系统:
    sudo apt update && sudo apt install nginx -y
    
  • Amazon Linux/RHEL系统:
    sudo yum install nginx -y
    

2. 配置SSL证书(以Let's Encrypt免费证书为例)

安装Certbot工具自动获取并配置证书:

  • Ubuntu/Debian系统:
    sudo apt install certbot python3-certbot-nginx -y
    
  • 运行证书生成命令,按照提示选择对应子域名完成配置:
    sudo certbot --nginx
    

3. 编写Nginx反向代理配置

在/etc/nginx/sites-available/目录下创建配置文件(比如domain-proxy.conf),内容如下:

# Admin子域名指向App1
server {
    listen 443 ssl;
    server_name admin.mydomain.com;

    ssl_certificate /etc/letsencrypt/live/admin.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/admin.mydomain.com/privkey.pem;

    location / {
        proxy_pass https://localhost:1010/;
        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;
    }
}

# CS子域名指向App2
server {
    listen 443 ssl;
    server_name cs.mydomain.com;

    ssl_certificate /etc/letsencrypt/live/cs.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cs.mydomain.com/privkey.pem;

    location / {
        proxy_pass https://localhost:1020/;
        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;
    }
}

# Member子域名指向App3
server {
    listen 443 ssl;
    server_name member.mydomain.com;

    ssl_certificate /etc/letsencrypt/live/member.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/member.mydomain.com/privkey.pem;

    location / {
        proxy_pass https://localhost:1030/;
        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;
    }
}

# 统一重定向HTTP到HTTPS
server {
    listen 80;
    server_name admin.mydomain.com cs.mydomain.com member.mydomain.com;
    return 301 https://$host$request_uri;
}

4. 启用配置并重启Nginx

  • 创建配置文件软链接到启用目录:
    sudo ln -s /etc/nginx/sites-available/domain-proxy.conf /etc/nginx/sites-enabled/
    
  • 测试配置语法:
    sudo nginx -t
    
  • 重启Nginx生效:
    sudo systemctl restart nginx
    

完成以上步骤后,即可通过对应的子域名直接访问各个容器应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:30:58