You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Streamlit应用无法通过域名dharmatech.dev:8501访问的问题

默认设置可正常运行

我通过以下方式启动应用:

streamlit run Fed_Net_Liquidity.py

可以通过以下地址访问该应用:

http://24.199.124.110:8501/

输入图片描述

问题情况

但当我执行以下命令时:

streamlit run --browser.serverAddress dharmatech.dev Fed_Net_Liquidity.py

尝试访问:

http://dharmatech.dev:8501/

出现访问失败的情况(截图见上方图片)。

服务器环境:

Ubuntu 22.04.4 LTS
问题问询

如何实现通过http://dharmatech.dev:8501/访问Streamlit应用?当前服务器上同时运行着Apache,但其占用的是80和443端口,理论上不会与Streamlit使用的8501端口冲突,恳请提供解决方案。

更新说明

经排查,该问题与SSL相关,相关参考内容翻译:在DigitalOcean部署Streamlit应用时,域名访问失败通常和SSL配置及反向代理设置有关,需要确保请求能正确转发并通过SSL加密。


解决方案

1. 配置Apache反向代理(推荐方案)

利用已运行的Apache做反向代理,将域名请求转发到本地Streamlit服务,同时配置SSL证书实现HTTPS访问:

  • 创建Apache虚拟主机配置文件(例如/etc/apache2/sites-available/dharmatech.dev.conf):
    # 强制HTTP跳转HTTPS
    <VirtualHost *:80>
        ServerName dharmatech.dev
        Redirect permanent / https://dharmatech.dev/
    </VirtualHost>
    
    # HTTPS反向代理配置
    <VirtualHost *:443>
        ServerName dharmatech.dev
    
        # 启用SSL并指定证书路径
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/dharmatech.dev/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/dharmatech.dev/privkey.pem
    
        # 将请求转发到本地Streamlit服务
        ProxyPass / http://127.0.0.1:8501/
        ProxyPassReverse / http://127.0.0.1:8501/
    </VirtualHost>
    
  • 启用Apache必要模块:
    sudo a2enmod proxy proxy_http ssl rewrite
    
  • 重启Apache服务:
    sudo systemctl restart apache2
    

2. 调整Streamlit启动命令

启动时绑定本地地址,避免直接暴露公网:

streamlit run Fed_Net_Liquidity.py --server.address 127.0.0.1 --server.port 8501

3. 确认SSL证书有效性

如果没有SSL证书,可以用Let's Encrypt免费申请:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d dharmatech.dev

申请完成后,certbot会自动配置Apache的SSL虚拟主机。


内容的提问来源于stack exchange,提问作者dharmatech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:30:59