CentOS Stream 8虚拟机上Streamlit应用内网正常但公网子域名访问卡在加载页面的问题求助
CentOS Stream 8虚拟机上Streamlit应用内网正常但公网子域名访问卡在加载页面的问题求助
我现在碰到个棘手的问题:我的Streamlit应用部署在CentOS Stream 8虚拟机上,内网访问完全正常,但通过公网的subDomain.companyDomain.com子域名访问时,一直卡在“streamlit please wait..”的加载页面,死活进不去。
先跟大家说下当前的环境和已做的基础验证:
- 同一台虚拟机上的R Shiny应用和静态页面,用相同端口通过该子域名访问公网完全正常,说明虚拟机端口开放、公司代理SSL的基础配置应该没问题
- 子域名和虚拟机名称不是同一个
- 公司代理服务器是启用SSL状态
我的Streamlit配置文件config.toml内容如下:
[server] port = 8585 headless = true enableCORS = false enableXsrfProtection = false enableWebsocketCompression = false address = "0.0.0.0" [browser] gatherUsageStats = false serverAddress = "subDomain.companyDomain.com"
已尝试的解决方法及结果
1. Apache反向代理
配置文件/etc/httpd/conf.d/testApp.conf内容:
<VirtualHost *:80> ServerName subDomain.companyDomain.com ServerAlias www.subDomain.companyDomain.com ProxyPreserveHost On ProxyPass "/" "http://local_IP:8585/" ProxyPassReverse "/" "http://local_IP:8585/" ErrorLog /var/log/httpd/testApp-error.log CustomLog /var/log/httpd/testApp-access.log common </VirtualHost>
结果:不管是访问local_IP:80还是subDomain.companyDomain.com,都卡在同一个加载页面,而且httpd的日志文件是空的,完全没留下可排查的错误信息。
2. Nginx反向代理
参考相关方案做了如下配置:
server { listen 80; location / { proxy_pass http://local_IP:8585/; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } }
结果:内网访问http://local_IP:8585和http://local_IP:80都能正常显示应用,但公网通过subDomain.companyDomain.com访问还是卡在加载页面,没有任何进展。
进一步排查的信息
通过浏览器DevTools追踪请求,发现问题大概率出在公司代理服务器与应用之间的WebSocket重定向环节,但我暂时没法定位具体是哪里出了问题,也不知道该怎么调整配置解决。
另外我查了端口监听状态,确认Streamlit确实在正常监听8585端口:
ss -tulpn |grep "streamlit" tcp LISTEN 0 128 0.0.0.0:8585 0.0.0.0:* users:(("streamlit",pid=206126,fd=8)) netstat -tulpn tcp 0 0 0.0.0.0:8585 0.0.0.0:* LISTEN 206126/python tcp6 0 0 :::8585 :::* LISTEN 206126/python
现在我拿不准这个问题是Streamlit的配置导致的,还是服务器/公司代理层面的问题,有没有大佬能帮忙分析下,给点排查方向或者解决建议?
备注:内容来源于stack exchange,提问作者nara3m
相关产品推荐
相关产品推荐

