NGINX控制器Kubernetes:需要在入口内更改主机头 脚本

NGINX控制器Kubernetes:需要在入口内更改主机头 脚本,nginx,kubernetes,Nginx,Kubernetes,我在运行NGINX和Kubernetes。我需要配置NGINX,以便它设置或覆盖主机头Host:minio:9000到一个pod,这样pod将始终服务于认为它作为minio:9000托管的请求,而不管请求来自何处。我相信推荐的方法是使用NGINX并修改Pod的入口注释(可能我错了) 我目前是如何设置的 相反,我通过本指南使用了带头盔的nginx控制器 我是这样宣布进入的。指南建议我在入口YAML上使用nginx注释 apiVersion: networking.k8s.io/v1beta1 ki

我在运行NGINX和Kubernetes。我需要配置NGINX,以便它设置或覆盖主机头
Host:minio:9000
到一个pod,这样pod将始终服务于认为它作为
minio:9000
托管的请求,而不管请求来自何处。我相信推荐的方法是使用NGINX并修改Pod的入口注释(可能我错了)

我目前是如何设置的 相反,我通过本指南使用了带头盔的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条回复,说主机头太多(这似乎是由于Pod运行Go造成的)。但至少我知道nginx正在收集注释

问题
  • 如何在kubernetes中配置NGINX,以便它从入口内部更改主机头
  • 也许我安装NGINX的方式不对?如果通过helm安装,那么从NGINX修改conf文件似乎并不容易。手动安装NGINX是否更好,而不是通过k8s或helm

结果是我的另一个注释
nginx.ingres.kubernetes.io/rewrite-target://$1
剥离了集群内的路径。去掉此注释可以使入口按预期工作。

Ug发现nginx.ingres.kubernetes.io/rewrite-target://$1 nginx.ingres.kubernetes.io/ssl-redirect:“false”破坏了我的路径,所以每次都在调用根。您好,当您解决问题时,请提供它作为更好的可视性的答案。
nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header Host 'minio:9000';