streamlit 应用程序正在 centOS stream 8 虚拟机中运行。从内联网访问正常,但从 www 通过 subDomain.companyDomain.com 访问时失败,并显示“streamlit 请稍候.. 页面”
测试了 R Shiny 应用程序和静态页面,它们都来自同一个虚拟机和同一个端口。两者都可以通过 www 和 subDomain.companyDomain.com 成功访问。
子域 != 虚拟机名称
公司代理服务器已启用 SSL
streamlit 配置.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>
有趣的是,重定向http:local_IP:8585
到 Apache virtualHost后*:80
,local_IP:80
和 subDomain.companyDomain.com 都挂在同一个“streamlit..请等待”页面上。
(顺便说一句,httpd/testApp* 日志文件是空的)
编辑2
使用 nginx(这个线) 并http://local_IP:8585
正确http://local_IP:80
显示应用程序。但是,subDomain.companyDomain.com 继续挂起并显示“streamlit 请等待”页面。
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;
}
}
浏览器跟踪表明通过以下方式重定向到/来自公司代理服务器时出现错误网络套接字。但我无法准确指出错误在哪里以及如何解决。
编辑3 通过 DevTools 跟踪浏览器请求
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.io因为我不确定这个问题是由 streamlit 还是服务器引起的。
答案1
问题与公司服务器阻止的网络套接字有关。