Nginx Ingress 添加注解

2025-06-26 18:07:00
丁国栋
原创 4
摘要:在 Nginx Ingress 中添加 X-Forwarded-Proto 配置注解。

在 Nginx Ingress 中添加 X-Forwarded-Proto 配置注解

要在 Nginx Ingress 控制器或者 应用 Ingress 中添加 X-Forwarded-Proto 头部,可以使用以下注解:

方法一:使用 nginx.ingress.kubernetes.io/configuration-snippet

metadata:
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-Proto $scheme;

方法二:使用专门的注解

metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-set-headers: "X-Forwarded-Proto: $scheme"

完整 Ingress 示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-Proto $scheme;
spec:
  ingressClassName: nginx
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

全局配置(修改 ConfigMap)

如果你想在所有 Ingress 资源中全局设置这个头部,可以修改 Nginx Ingress 控制器的 ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
data:
  proxy-set-headers: "ingress-nginx/custom-headers"

然后创建另一个 ConfigMap 来定义自定义头部:

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-headers
  namespace: ingress-nginx
data:
  X-Forwarded-Proto: "$scheme"

验证

部署后,你可以通过以下方式验证头部是否正确添加:

curl -v http://example.com

或者在应用程序中检查 X-Forwarded-Proto 头部的值。

注意:$scheme 变量会根据请求是 HTTP 还是 HTTPS 自动设置为 "http" 或 "https"。

其他常见的注解

- apiVersion: networking.k8s.io/v1
  kind: Ingress
  metadata:
    annotations:
      nginx.ingress.kubernetes.io/proxy-body-size: "0" # 0 表示不限制,其他值例子为 200M
      nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" # 单位为秒
      nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
      nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
发表评论
博客分类