展开

k8s 容器应用代理-gateway

最后发布时间 : 2024-11-16 20:53:48 浏览量 :

对jupyter的代理

jupyter lab  --NotebookApp.token=''  --NotebookApp.ip='0.0.0.0' --NotebookApp.base_url='/jupyter/'
        - id: vscode-cloud
          uri: http://192.168.10.177:32007
          predicates:
            - Path=/vscode/**
          filters:
            - RewritePath=/vscode/?(?<segment>.*), /$\{segment}
        - id: vscode2
          uri: http://192.168.10.177:32007
          predicates:
            - Path=/vscode2/**
          filters:
            - StripPrefix=1
        - id: jupyter
          uri: http://192.168.10.30:8888
          predicates:
            - Path=/jupyter/**

注意: 代理jupyter与代理vscode不同,不能使用filters: StripPrefix=1

代理jupyter与代理vscode的区别是什么

生信小木屋

代理vscode访问http://192.168.10.30:40000/vscode/实际上访问http://192.168.10.30:40000,nginx也有类似的代理。vscode的所有资源都在相对于基路径/vscode/上(/vscode/?folder=/data),请求静态资源都是相对路径因此代理时去掉路径vscode是可以的,所有静态资源都能在路由上找到映射,并且代理后也能找到真正资源的位置。

对于jupyter,当我们试图采用与vscode相同的方式代理时,

 jupyter lab  --NotebookApp.token=''  --NotebookApp.ip='0.0.0.0'
        - id: jupyter
          uri: http://192.168.10.30:8888
          predicates:
            - Path=/jupyter/**
          filters:
            - StripPrefix=1

当你试图访问http://192.168.10.30:40000/jupyter/浏览器会跳跳转到http://192.168.10.30:40000/lab?,由于StripPrefix=1会导致实际访问路径是没有jupyter的,并且http://192.168.10.30:40000这个ip下是没有路由lab的。因此我们首先需要去掉StripPrefix=1

        - id: jupyter
          uri: http://192.168.10.30:8888
          predicates:
            - Path=/jupyter/**

结果如下:

生信小木屋

同时终端也有如下错误

[W 2024-11-16 14:59:23.440 ServerApp] 404 GET /jupyter (e70b3f6436bc444490f4ec0b5624685b@192.168.10.30) 1.51ms referer=None

此时就需要添加jupyter的参数base_url

--NotebookApp.base_url='/jupyter'

接下来访问http://192.168.10.30:40000/jupyter/lab就可以成功!
注,如果跨域可以添加参数--NotebookApp.allow_origin='*'