运行Streamlit时如何让浏览器地址栏显示自定义域名而非裸IP?
配置方案
你此前配置Nginx不生效并非Streamlit强制显示IP,核心原因是Streamlit依赖WebSocket协议实现页面实时交互,默认的Nginx反向代理配置未适配WebSocket规则,导致代理跳转异常,按以下步骤配置即可同时解决域名显示和不安全锁标问题:
1. 正确配置Nginx反向代理
新增Nginx站点配置文件(路径通常为/etc/nginx/conf.d/你的域名.conf),写入以下内容:
server { listen 80; server_name 替换为你的自定义域名; location / { proxy_pass http://127.0.0.1:8502; # 替换为你的Streamlit实际运行端口 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; # 适配Streamlit的WebSocket连接,是此前配置不生效的核心配置 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } }
配置完成后执行以下操作生效:
- 测试配置语法是否正确:
nginx -t - 重载Nginx配置:
systemctl reload nginx - 云服务器安全组开放80端口,关闭原来对外暴露的Streamlit运行端口(如8502),避免直接通过IP+端口访问
完成此步后访问你的自定义域名,地址栏就会正常显示域名而非IP+端口。
2. 配置SSL证书解决不安全锁标
不安全提示是因为使用HTTP协议,可通过certbot一键申请免费SSL证书开启HTTPS:
- Debian/Ubuntu系系统安装依赖:
apt install certbot python3-certbot-nginx -y - CentOS/RHEL系系统安装依赖:
yum install certbot python3-certbot-nginx -y - 一键申请证书并自动配置HTTPS:
certbot --nginx -d 替换为你的自定义域名 - 按提示输入邮箱、同意服务协议即可,certbot会自动修改Nginx配置、开启443端口、设置证书自动续期,完成后访问域名就是HTTPS协议,不安全锁标会变为正常安全状态。
可选:Streamlit启动参数加固
可在启动Streamlit时增加参数,彻底禁止外部直接IP访问:streamlit run 你的应用脚本.py --server.address 127.0.0.1
该参数强制Streamlit仅监听本地回环地址,所有外部请求只能通过Nginx代理访问,进一步避免IP暴露。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

