Streamlit应用经Nginx反向代理域名访问卡在Please wait如何解决?
问题原因
你当前使用的Nginx基础反向代理配置未适配Streamlit核心依赖的WebSocket长连接通信机制,导致前端与后端的WebSocket握手请求失败,因此页面加载到"Please wait..."阶段就会中断。
可行解决方案
步骤1:修改Nginx反向代理配置
编辑/etc/nginx/nginx.conf文件,替换原有location /块的内容,完整的server块参考如下:
server { listen 80; listen [::]:80; server_name MY_DOMAIN_NAME; root /usr/share/nginx/html; location / { proxy_pass http://127.0.0.1:8501; # 优先用本地回环地址,避免公网IP路由问题 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; proxy_read_timeout 86400; # 避免长连接被主动断开 } }
配置修改完成后执行以下命令验证配置合法性,重载Nginx生效:
sudo nginx -t sudo systemctl reload nginx
步骤2:调整Streamlit启动参数
你之前试过的两个参数建议同时启用,不需要分开测试,启动命令如下:
streamlit run main.py --server.enableCORS=false --server.enableWebsocketCompression=false
如果想省去每次启动加参数的步骤,可以在项目根目录创建.streamlit/config.toml文件,写入以下固定配置:
[server] enableCORS = false enableWebsocketCompression = false address = "0.0.0.0" port = 8501
后续直接执行streamlit run main.py即可生效。
可选排查项
如果修改后仍无法正常访问,优先检查以下配置:
- EC2实例关联的安全组入站规则是否开放了80端口的公网访问权限
- 确认域名解析的IP地址和你EC2实例的公网IP完全一致
- 打开浏览器控制台查看报错信息,如果出现404/403错误,优先检查Nginx日志定位问题
内容的提问来源于stack exchange,提问作者lflflf
相关产品推荐
相关产品推荐

