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

Apache2反向代理Streamlit应用至子目录失败求助

Apache反向代理配置错误导致Streamlit子目录访问静态资源404的解决方法

问题诊断

你的配置存在四个核心问题:

  • HTTP/HTTPS跳转规则完全写反:原有规则会把HTTPS请求强制跳转到HTTP,直接导致加密连接失效
  • Streamlit未配置基础路径:Streamlit默认从根路径加载静态资源,不知道自己运行在/llm子目录下,因此会生成/static/...的资源路径,而非/llm/static/...
  • ProxyPassReverse配置错误:当前配置会把响应头里的路径重写为根目录,而非/llm子目录
  • Rewrite规则与ProxyPass冲突:重复的转发规则会导致请求处理逻辑混乱

修复步骤

1. 修改Streamlit启动命令

启动Streamlit时必须指定基础路径,让它知道自己在子目录下运行:

streamlit run your_app.py --server.baseUrlPath=/llm

2. 替换完整的Apache配置

将/etc/apache2/sites-available/your-site.conf的内容替换为以下配置:

# 启用SSL及证书配置
ServerName example.com
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

# HTTP强制跳转至HTTPS(修正原有反向跳转错误)
RewriteEngine On
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]

# 密码保护(直接保护/llm子目录)
<Location /llm>
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Location>

# 反向代理配置:处理WebSocket和普通HTTP请求
ProxyRequests Off
ProxyPreserveHost On

# WebSocket转发规则
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /llm/(.*) ws://localhost:8501/llm/$1 [P,L]

# 普通HTTP请求转发规则
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /llm/(.*) http://localhost:8501/llm/$1 [P,L]

# 主代理规则,确保路径映射完全匹配
<Location /llm>
    ProxyPass http://localhost:8501/llm
    ProxyPassReverse http://localhost:8501/llm
</Location>

3. 重启服务生效

systemctl restart apache2
# 重启你的Streamlit应用(务必使用新的启动命令)

关键修改说明

  • 修正HTTPS跳转逻辑:把原有反向跳转改成HTTP强制转HTTPS,确保所有请求都走加密连接
  • Streamlit基础路径配置:--server.baseUrlPath=/llm让Streamlit生成所有资源路径时自动加上/llm前缀,从根源避免静态资源404
  • ProxyPassReverse修正:改为匹配http://localhost:8501/llm,Apache会把Streamlit响应头里的路径正确重写为/llm/...
  • 合并转发规则:统一WebSocket和普通请求的转发逻辑,避免规则冲突
  • 密码保护调整:用<Location /llm>替代<Directory>,直接保护子目录路径,更适配反向代理场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:57:27