type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jan 25, 2025 05:58 AM
Superset原生的架构只支持在域的根目录下部署服务。因为前端(React框架)使用的端点是硬编码。而后端(Flask框架)返回的重定向路径被硬编码了。全部修改起来修改量很大,所有superset官方这几年一直没有解决方案。
我使用Nginx配置将服务部署到二级目录,并且稳定运行,基于以下两种基本规则:
- sub_filter 是修改 响应体(HTML、JSON、CSS、JS 等)内部链接、路径等文本的。
- proxy_redirect 是修改 响应头(尤其是 3xx 重定向 Header)里返回路径的。
两者结合,理论上就能实现“把原本部署在根路径的服务(如 /superset/)搬到一个非根路径(如 //superset/)”并保证页面上的所有跳转链接、静态资源引用都能正确指向 // 下的对应资源。
部分配置展示:
未来的优化方向:
使用Nginx代理到二级目录是一个临时的解决方案,是为了快速部署上线。未来考虑到稳定性,当有时间进行重构时,可以用
Flask.url_for
来替换后端的硬编码,前端则在硬编码前面加一个基础路径,使其可以配置。- 作者:很久不是自己
- 链接:https://weibo.com/article/superset-perfix-nginx
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章