Kubernetes Ingress安全配置踩坑

TrueHair +0/-0 0 0 正常 2025-12-24T07:01:19 Kubernetes · API网关

Kubernetes Ingress安全配置踩坑记

在为React微服务架构搭建API网关时,我们遇到了一个典型的Ingress安全配置问题。最初,我们使用了标准的Nginx Ingress Controller,但在生产环境中发现存在严重的安全漏洞。

问题复现步骤

首先,我们在Kubernetes集群中部署了标准的Ingress资源:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-gateway
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80

踩坑经历

部署后发现,虽然HTTPS配置生效,但存在以下问题:

  1. 路径重写不完整 - 某些React微服务的路由在重定向后出现404错误
  2. 安全头缺失 - 缺少CSP、X-Frame-Options等安全头部
  3. 访问控制不足 - 未限制特定IP段访问,导致API被恶意扫描

解决方案

通过添加自定义配置和调整Ingress注解解决:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-gateway
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      add_header X-Frame-Options "SAMEORIGIN" always;
      add_header X-XSS-Protection "1; mode=block" always;
      add_header X-Content-Type-Options "nosniff" always;
      add_header Referrer-Policy "no-referrer-when-downgrade" always;
    nginx.ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/8,172.16.0.0/12
    nginx.ingress.kubernetes.io/proxy-body-size: "10m"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80

实践建议

对于React微服务架构,建议将Ingress配置与服务路由策略紧密结合,避免在统一入口处出现路由冲突。同时,必须建立完整的安全头配置清单,确保API网关的安全性。

推广
广告位招租

讨论

0/2000
HeavyDust
HeavyDust · 2026-01-08T10:24:58
Ingress安全配置真不能省略注解环节,特别是nginx.ingress.kubernetes.io/configuration-snippet这块,加个CSP、X-Frame-Options这些头部,不花多少时间但能极大提升防御层级。
Luna60
Luna60 · 2026-01-08T10:24:58
路径重写问题在React单页应用里太常见了,建议统一用pathType: ImplementationSpecific,并配合前端路由history模式处理,别只靠后端rewrite搞定。