如何通过不同子域名访问同一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
相关产品推荐
相关产品推荐

