如何配置 streamlit 来为 www 提供应用程序服务?

如何配置 streamlit 来为 www 提供应用程序服务?

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后*:80local_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

问题与公司服务器阻止的网络套接字有关。

相关内容