【问题标题】:NGINX controller Kubernetes: need to change Host header within ingressNGINX 控制器 Kubernetes:需要在入口中更改主机标头
【发布时间】:2020-11-14 03:20:19
【问题描述】:

场景

我正在运行 NGINX 和 Kubernetes。我需要配置 NGINX,以便它将 Host 标头 Host: minio:9000 设置或覆盖到 Pod,以便 Pod 始终为请求提供服务,认为它作为 minio:9000 托管,无论请求来自何处。我相信推荐的方法是使用 NGINX 并修改该 Pod 的入口注释(也许我错了)。

我目前的设置方式

我通过本指南 https://kubernetes.github.io/ingress-nginx/deploy/#using-helm 代替我的 nginx 控制器使用 helm

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install my-release ingress-nginx/ingress-nginx

我这样声明我的入口。指南建议我在入口 YAML 上使用 nginx 注释。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: {{ template "fullname" . }}
  labels:
    chart: {{ template "chartVersion" . }}
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_input_headers 'Host: minio:9000';

spec:
  rules:
  - host: {{ .Values.ingress.host }}
    http:
      paths:
      - path: /
        backend:
          serviceName: {{ template "fullname" . }}
          servicePort: {{ .Values.deployment.servicePort }}

许多指南都说这会奏效。我试过了

nginx.ingress.kubernetes.io/upstream-vhost: minio:9000

我也试过

nginx.ingress.kubernetes.io/configuration-snippet: |
  access_by_lua_block {
    ngx.var.best_http_host = 'minio:9000';
  }

这些方法似乎都不会从集群内部更改主机标头。如果我这样做了

nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header Host 'minio:9000';

我收到一个 400 响应,说太多 Host 标头(这似乎是由运行 Go 的 Pod 引起的)。但至少我知道注释正在被 nginx 拾取。

问题

  • 如何在 kubernetes 中配置 NGINX,以便它从入口内部更改 Host 标头?
  • 也许我安装 NGINX 的方式有误?如果通过 helm 安装,从 NGINX 修改 conf 文件似乎并不容易。手动安装 NGINX 而不是通过 k8s 或 helm 安装会更好吗?

【问题讨论】:

  • Ug 原来 nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/ssl-redirect: "false" 搞砸了我的路径,所以它只是随时调用根目录。
  • 您好,在您解决了您的问题后,请提供它作为答案,以便更好地了解。

标签: nginx kubernetes


【解决方案1】:

原来是我的另一个注释nginx.ingress.kubernetes.io/rewrite-target: /$1 剥离了集群内的路径。去掉这个注解可以让入口按预期工作。

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 2021-05-31
    • 2019-03-13
    • 2018-10-29
    • 2021-05-31
    • 2018-10-05
    • 2016-10-02
    • 2020-11-06
    • 2019-08-03
    相关资源
    最近更新 更多