You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AKS部署的REST API中保留客户端IP:AKS层面需做哪些设置?

问题解答

是的,必须在AKS层面做针对性配置——默认情况下AKS负载均衡器会启用SNAT(源网络地址转换),导致你的REST API收到的请求头里的客户端IP被替换成集群节点的IP,而非真实客户端地址。

具体配置方案

1. 直接用LoadBalancer类型Service暴露API

如果你的API是通过LoadBalancer Service直接对外暴露,需要在Service的YAML配置中添加externalTrafficPolicy: Local字段。这个配置会让负载均衡器跳过SNAT,直接将请求转发到后端Pod所在的节点,Pod就能拿到真实的客户端IP:

apiVersion: v1
kind: Service
metadata:
  name: your-api-service
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local # 关键配置
  selector:
    app: your-api
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080 # 替换为你的API监听端口

2. 通过Ingress Controller暴露API(以NGINX Ingress为例)

如果用Ingress来管理API的访问,需要两步配置:

  • 首先修改Ingress Controller对应的Service,开启externalTrafficPolicy: Local:
apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-controller
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local # 关键配置
  # 其他原有配置(如selector、ports等)保持不变
  • 然后在你的API对应的Ingress资源中添加注解,开启真实IP传递:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-api-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
    nginx.ingress.kubernetes.io/remote-header: "X-Forwarded-For" # 指定存储真实IP的请求头
spec:
  # 其他原有配置(如rules、tls等)保持不变

配置完成后,你的API可以从X-Forwarded-For请求头中获取到真实的客户端IP。

验证配置生效

部署完上述配置后,查看你的API日志,确认请求头中的客户端IP字段(或X-Forwarded-For)是否已经显示真实的客户端地址,而非AKS集群的IP。

内容的提问来源于stack exchange,提问作者Suresh Ganesan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:40:07