nebula studio通过nginx跳转后获取不到页面的静态资源如CSS,PNG等

提问参考模版:

  • nebula 版本:2.6.2
  • 部署方式:单机
  • 安装方式:K8S / Docker
  • 是否为线上版本: N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • nebula studio通过helm或docker安装部署到linux系统后,使用nginx进行跳转,使用域名访问如下格式:https://ce5.xxxx.com/nebula-studio 能访问到studio,显示界面为加载页面,查看F12,CSS文件等都获取失败.访问路径表现为https://ce5.xxxx.com/vendor.js 缺少了/nebula-studio, linux配置如下: location ^~ /nebula-studio/ {
    proxy_pass http://192.168.16.101/;
    }

image
这个我理解是 nginx 没配置完善吧,我们的资源打包以后是没有路径的

了解打包后是没路径的,意思是拼接的域名前缀,css等资源获取的前缀应该是https://ce5.xxxx.com/nebula-studio 这样一整个去拼接。nginx更改了不取消后缀查看前台也是拿的https://ce5.xxxx.com/ 少了这个nebula-studio前缀

    <script src="/public/vendors.0b4be3cbe16d036ce816.js"></script>
    <script src="/public/manifest.de741705be71e8077be0.js"></script>

对比了下 这些路径是否应该使用相对路径"public/manifest.de741705be71e8077be0.js"

目前用的是绝对路径呢,后续我们可以考虑优化下。目前是否可以通过监听端口转发来解决呢

没查找到如何修改…单独设置静态文件的反向代理后,查看前端调用的接口也是缺少了路径…是否有能配置前端获取项目路径的地方呢?

我的意思是,nginx 不要用 /nebula-studio/ 来转发,而是通过开放一个端口,比如监听 8080 转发到相应的位置,然后你们通过 https://ce5.xxxx.com:8080 这样来访问呢,应该可以避免

现在就是从开放端口的方式改成nginx代理的…因为测试服不给暴露端口了,开放端口访问是没问题的

或者能否告知前端改那里可以更改这个访问的前缀呢?

用的是哪个版本呢

nebula 版本:2.6.2 studio 版本 3.1.0

您好,我通过nginx sub_filter对访问的地址都加上了前缀,可以访问进去了,进到里面,其他静态资源和api都可以访问了,剩下api-nebula/task/import/action 返回404,这个接口是还需要什么处理嘛? 在服务器里单独curl域名地址或ip地址都返回200.

http-gateway 部署的是什么版本

使用k8s直接拉取studio的镜像进行部署的

vesoft/nebula-graph-studio:v3.1.0
拉取的镜像这个版本是否包含了gateway?

或者有k8s + nginx + stuido的案例查看嘛…使用sub_filter进行修改还是有问题的

api-nebula/task/import/action这个返回404是因为gateway的问题嘛?

查看了docker方式部署的镜像信息 ,参考docker-compose.yml和nginx.conf:
location ~ ^/api-nebula/([A-Za-z0-9/]+) {
proxy_pass http://client:8080/api/$1;
}
使用k8s新增pod vesoft/nebula-http-gateway:v2.1.1 gateway的镜像后和设置nginx的反向代理后访问正常.感谢回复.希望可以把前端项目的publicPath改为相对路径,不然对于使用nginx反向代理后获取到的路径只有server_name而缺少了跳转的路径导致后续的访问全都404.仅能通过nginx sub_filter对每个访问路径添加缺少的跳转路径,且不是很好的解决办法.

1 个赞

正则表达式似乎不太对,无法匹配子级路由

这个是官方拉下来的…没仔细看正则 现在界面是没什么问题的 源于:部署 Studio - Nebula Graph Database 手册 nebula-graph-studio-v3.1.0.tar.gz里的naginx/nginx.conf