kubernetes nginx到子域重定向的入口子路径

时间:2020-09-11 16:43:18

标签: nginx kubernetes nginx-ingress guacamole

我正在尝试实现以下proxy_pass设置,基本上其中一项服务是列出到subdomain.example.com/guacamole,但我想将其作为subdomain.example.com

    location / {
    proxy_pass http://guacamole:8080/guacamole/;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_cookie_path /guacamole/ /;
    access_log off;
    # allow large uploads (default=1m)
    # 4096m = 4GByte
    client_max_body_size 4096m;
    }

下面是nginx入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: guacamole-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - subdomain.example.com
  rules:
  - host: subdomain.example.com
    http:
      paths:
      - path: /guacamole
        backend:
          serviceName: service-guacamole-frontend
          servicePort: 8080

我尝试使用nginx.ingress.kubernetes.io/rewrite-target: /,但是没有用。

2 个答案:

答案 0 :(得分:0)

path: /guacamole代替path: /应该可以解决问题。

  rules:
  - host: subdomain.example.com
    http:
      paths:
      - path: /  # replace `/guacamole` with `/`
        backend:
          serviceName: service-guacamole-frontend
          servicePort: 8080

答案 1 :(得分:0)

您应该使用Keychain批注。

来自nginx-ingress docs

如果“应用程序根目录”位于其他路径中,并且需要重定向,请设置注释nginx.ingress.kubernetes.io/app-root以重定向对/的请求。

尝试使用:

keychain["isPremium"] = "true"             // set the state
let token = try? keychain.get("isPremium") // get the state to check if it worked
print(token as Any) 

Here,您可以找到另一个示例。