我有 nginx 负载均衡器,它接受面向公众的请求,然后根据其配置,将这些请求转发到我的集群。然后入口匹配请求的主机和路径,并将这些进一步转发到集群的内部服务。
Nginx Load balancer -> Ingress -> internal services of cluster
这里我使用
proxy_pass
将请求从 NGINX 负载均衡器转发到 Ingress,并使用 $host
将 Host 标头设置为 proxy_set_header
。
现在的问题是入口与从 NGINX 负载均衡器传递的主机标头不匹配。有没有办法将 ingres 主机规则与从 NGINX 传递的主机标头相匹配?
要将入口主机规则与从 NGINX 传递的主机标头匹配,您可以考虑使用注释。还要确保您的 NGINX 配置应正确设置主机标头。
您可以将 Kubernetes annotations 添加到特定 Ingress 对象以自定义其行为。
注释看起来像这样:
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Request-Id: $req_id";
Ingress 资源可以使用基本的 NGINX 功能,例如基于主机或基于路径的路由和 TLS 终止。可以使用 Annotations 启用高级功能,例如重写请求 URI 或插入附加响应标头。