代码之家  ›  专栏  ›  技术社区  ›  Gabriele B

在GKE中为nginx入口配置RStudio服务器服务

  •  1
  • Gabriele B  · 技术社区  · 6 年前

    我在GKE上有一个Kubernetes集群,它的顶部有一个nginx入口控制器,用于映射/RStudio/下的RStudio服务器端点。这很管用。

    不幸的是,我的一个部署(RStudio Server)不能正常工作,因为它在登录/注销期间使用客户端重定向,当尝试访问/auth login时,会出现404错误(应该是/RStudio/auth login)

    过去,在使用RStudio服务器的非容器化安装时,我常常在前端安装一个Apache反向代理来处理url重写。

    official RStudio Server Pro guide location 节至 nginx.conf 应该能解决问题。

    location /rstudio/ {
      rewrite ^/rstudio/(.*)$ /$1 break;
      proxy_pass http://localhost:8787;
      proxy_redirect http://localhost:8787/ $scheme://$host/rstudio/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_read_timeout 20d;
    }
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gabriele B    6 年前

    虽然结果不一样 nginx.conf

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: rstudio-ingress-nginx
      annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
        nginx.ingress.kubernetes.io/add-base-url: "true"
        nginx.ingress.kubernetes.io/proxy-redirect-from: "$scheme://$host/"
        nginx.ingress.kubernetes.io/proxy-redirect-to: "$scheme://$host/rstudio/"
        nginx.ingress.kubernetes.io/proxy-read-timeout: 20d
        nginx.ingress.kubernetes.io/affinity: "cookie"
        nginx.ingress.kubernetes.io/session-cookie-name: "route"
        nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
    spec:
      rules:
      - http:
          paths:
          - path: /rstudio/
            backend:
              serviceName: rstudio
              servicePort: 8787