如何将部署在AWS EC2的Streamlit应用(端口8501)关联到Aruba域名?
解决AWS EC2与Aruba托管域名关联的问题
一、修正DNS解析配置(核心误区:无需使用Route53 NS记录)
你的域名托管在Aruba,所有DNS配置直接在Aruba后台操作即可,不需要将Route53的NS记录设置到Aruba——这是导致你收到NS无效提示的原因。正确操作步骤:
- 确认EC2实例已绑定弹性IP(避免实例重启后公网IP变更)
- 登录Aruba域名管理后台,找到DNS记录设置模块:
- 添加/修改A记录:主机记录填
@(对应主域名,如yourdomain.com)或www(对应www.yourdomain.com),记录值填写EC2的弹性IP地址,TTL建议设为300(5分钟,加快解析生效速度) - 若需子域名访问(如
app.yourdomain.com),主机记录填app,记录值同样填弹性IP
- 添加/修改A记录:主机记录填
二、验证DNS解析是否生效
设置完成后,用命令行工具验证解析结果:
nslookup yourdomain.com # 或使用dig工具 dig yourdomain.com
如果返回的IP与EC2弹性IP一致,说明解析生效;若未生效,可能是本地DNS缓存未更新,可清除本地缓存或等待TTL到期(最长5分钟)。
三、确保域名访问的端口可达
你的Streamlit应用运行在8501端口,直接访问域名会默认使用80端口(无服务监听),因此会出现「Connection refused」,和直接访问IP不带端口的情况一致。有两种解决方式:
方法1:访问域名时携带端口
直接通过yourdomain.com:8501访问,同时需确保:
- EC2安全组已添加入站规则:允许TCP 8501端口,来源设为
0.0.0.0/0(允许公网访问) - EC2实例本地防火墙(如iptables)未拦截8501端口,可通过以下命令检查:
sudo iptables -L | grep 8501
若无输出,说明无拦截规则;若存在拒绝规则,需删除对应规则。
方法2:配置反向代理(推荐,无需携带端口访问)
用Nginx做反向代理,将80/443端口的请求转发到8501端口,步骤如下:
- 在EC2实例上安装Nginx:
# Ubuntu/Debian系统 sudo apt update && sudo apt install nginx # CentOS/RHEL系统 sudo yum install nginx
- 配置反向代理规则:
- 备份默认配置:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak - 编辑配置文件:
sudo nano /etc/nginx/sites-available/default - 将原有server块替换为:
- 备份默认配置:
server { listen 80; server_name yourdomain.com www.yourdomain.com; location / { proxy_pass http://localhost:8501; 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; } }
- 验证配置并重启Nginx:
sudo nginx -t sudo systemctl restart nginx
- 更新EC2安全组:添加入站规则允许TCP 80端口(HTTP),来源设为
0.0.0.0/0 - 现在可直接通过
yourdomain.com访问应用,无需携带端口。
四、常见问题排查
- 若解析正确但无法访问:检查Streamlit启动命令是否绑定了
0.0.0.0(默认绑定,若指定--server.address 127.0.0.1则仅允许本地访问) - 反向代理后出现502错误:确认Streamlit应用正在运行,且EC2本地可通过
curl localhost:8501正常访问应用
内容的提问来源于stack exchange,提问作者cami
相关产品推荐
相关产品推荐

