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

OKD 4.8 passthrough路由部署nginx日志无法获取真实客户端IP咨询

问题根因

你当前使用的是passthrough TLS终止模式的OKD Route,该模式下Ingress Controller不会解密HTTPS流量,仅做四层TCP流量透传,因此不会向请求注入X-Real-IP、X-Forwarded-For这类携带客户端真实IP的头字段,Nginx侧自然无法读取到真实IP,日志里只会显示转发流量的Ingress Controller节点IP。

注:从你提供的Nginx编译参数可以确认已经内置了http_realip_module模块,无需额外安装扩展,修改配置后直接生效即可。

现有配置不合理点

  • Route层使用passthrough模式,无法传递携带真实IP的请求头
  • Nginx配置仅设置了set_real_ip_from,缺少real_ip_header指定真实IP的读取来源,就算有对应请求头也不会替换$remote_addr为真实IP
  • set_real_ip_from直接配置为0.0.0.0/0过于宽松,存在客户端伪造请求头获取非法信任的安全风险

修复方案

方案1:切换Route为reencrypt/edge终止模式(推荐,改动最小)

如果不需要Nginx端持有TLS证书做特殊处理,切换终止模式即可让Ingress Controller自动注入真实IP相关请求头:

  1. 修改Route配置:
- kind: Route
  apiVersion: route.openshift.io/v1
  metadata:
    name: app-cname
    labels:
      app: app
  spec:
    host: "app.dev.com"
    to:
      kind: Service
      name: app
      weight: 100
    port:
      targetPort: 8080-tcp
    tls:
      termination: reencrypt # 不需要Nginx侧做TLS的话也可以选edge模式,后端Nginx可直接监听HTTP端口
      insecureEdgeTerminationPolicy: Redirect
      # reencrypt模式需要补充caCertificate字段,填写Nginx证书的CA根证书内容,edge模式无需该字段
  1. 修改Nginx配置的http块:
http {
    # 替换为你实际的OKD Ingress Controller节点IP段,避免IP伪造风险
    set_real_ip_from 10.0.0.0/24;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # 其余原有配置保持不变
}

修改后重启Nginx Pod即可正常打印真实IP。

方案2:保留passthrough模式,启用Proxy Protocol

如果必须保留Nginx侧做TLS终止的逻辑,可通过Proxy Protocol传递真实IP:

  1. 联系集群管理员调整OKD Ingress Controller配置,开启Proxy Protocol支持
  2. 修改Nginx配置:
http {
    # 替换为你实际的OKD Ingress Controller节点IP段
    set_real_ip_from 10.0.0.0/24;
    real_ip_header proxy_protocol;
    real_ip_recursive on;

    server {
        # 监听配置新增proxy_protocol参数
        listen 8080 ssl proxy_protocol; 
        listen [::]:8080 ssl proxy_protocol;
        # 其余原有server配置保持不变
    }
    # 其余原有http配置保持不变
}

修改后重启Nginx Pod即可生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:45:06