Kubernetes ingress-nginx 未返回 HTTP 响应 header

Kubernetes ingress-nginx not returning http response header

我遇到了 ingress-nginx(反向代理)未从应用程序容器返回 http 响应 header (ETag) 的问题。

没有入口也能正常工作。

Missing http response header

任何帮助将不胜感激。

以下是 Ingress yaml 文件的片段

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ng-api-ngress
  namespace: ng-prod
  labels:
    app: numbergenerator
  annotations:
    #nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-headers: etag
    nginx.ingress.kubernetes.io/cors-expose-headers: etag
    #nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
spec:
  rules:
  - host: kubernetes.docker.internal.api
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: ng-backend
            port:
              number: 80

您可以添加此 Nginx ingress 注释:

nginx.ingress.kubernetes.io/server-snippet: |
      etag on;
nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "server: hide";

如果启用了 Gzip,Nginx 入口将不会添加或传递 etag。

据我所知,etag 不会由 Nginx 在反向代理配置中生成,但是如果需要,您可以从后端代码生成和管理。