通过应用型BLB实例获取客户端信息

负载均衡 BLB

  • 快速入门
  • 功能发布记录
  • 产品描述
    • 产品特性
    • 使用限制
    • 基本概念
    • 基本架构
    • 产品优势
    • 产品介绍
    • 应用场景
    • 性能规格说明
  • 典型实践
    • 通过Terraform实现BLB关联监听器、后端服务器、安全组等
    • BLB选型指南
    • 通过应用型BLB实例获取客户端信息
    • 使用IP组功能在跨地域VPC挂载后端服务器
    • 负载均衡安全防护策略
    • 使用IP组功能在同地域跨VPC挂载后端服务器
    • 通过应用型BLB实现多站点托管
    • 健康检查异常排查
    • 通过Terraform管理BLB
  • 操作指南
    • 多用户访问控制
    • 负载均衡专属集群
    • 负载均衡前后端使用协议对应关系
    • BLB监控项说明
    • 访问控制
    • 标签管理
    • 访问日志
    • 使用VPC流日志记录访问日志
    • 实名认证
    • 扩展域名
    • 应用型BLB实例
    • 服务发布点
    • 普通型IPv6 BLB实例
    • 应用型IPv6实例
    • 定制配置
    • IP组使用指南
    • 普通型BLB实例
      • 创建BLB普通型实例
      • 管理BLB普通型实例
  • 服务等级协议SLA
    • 百度云负载均衡可信云认证服务可用性说明
    • LBDC服务等级协议SLA
    • BLB服务等级协议SLA(V2.0)
  • API参考
    • 访问控制
    • 简介
    • 文档更新记录
    • 附录
    • 接口规范
    • API服务域名
    • 错误码
    • 应用型IPv6BLB接口
      • 应用型IPv6BLB监听器相关接口
      • 应用型IPv6BLB安全组相关接口
      • 应用型IPv6BLB实例相关接口
      • 应用型IPv6BLB服务器组相关接口
    • 普通型BLB接口
      • 普通型BLB实例相关接口
      • 普通型BLB安全组相关接口
      • 普通型BLB监听器相关接口
      • 普通型BLB后端服务器相关接口
    • 服务发布点接口
      • 服务发布点相关接口
    • 负载均衡专属集群LBDC接口
      • LBDC实例相关接口
    • BLB订单相关接口
      • BLB询价
      • BLB计费变更-后付费转预付费
      • BLB计费变更-预付费转后付费
      • BLB-变配
      • BLB计费变更-取消预付费转后付费
      • BLB退订接口
    • 应用型BLB接口
      • 应用型BLB服务器组相关接口
      • 应用型BLB实例相关接口
      • 应用型BLB监听器相关接口
      • 应用型BLB安全组相关接口
    • 普通型IPv6BLB接口
      • 普通型IPv6BLB相关接口
  • 常见问题
    • 计费类问题
    • 负载均衡专属集群类问题
    • 一般类问题
    • 常见问题总览
    • 性能类问题
    • 安全类问题
    • 配置类问题
    • 故障类问题
  • 产品定价
    • 负载均衡实例计费
    • 负载均衡专属集群计费
  • SDK
    • Python-SDK
      • 普通型blb实例
      • 负载均衡专属集群LBDC
      • 应用型blb实例
      • IPv6型BLB实例
      • 服务发布点
      • 初始化
      • 版本更新说明
      • 安装
      • 概述
    • Java-SDK
      • 普通型BLB实例
      • 负载均衡专属集群LBDC
      • 应用型BLB实例
      • IPv6型BLB实例
      • 服务发布点
      • 初始化
      • 版本更新说明
      • 安装SDK工具包
      • 概述
    • GO-SDK
      • 普通型blb实例
      • 负载均衡专属集群LBDC
      • 应用型blb实例
      • 版本变更记录
      • IPv6型BLB实例
      • 服务发布点
      • 初始化
      • 安装
      • 概述
    • PHP-SDK
      • 普通型blb实例
      • 初始化
      • 安装
      • 概述
所有文档
menu
没有找到结果,请重新输入

负载均衡 BLB

  • 快速入门
  • 功能发布记录
  • 产品描述
    • 产品特性
    • 使用限制
    • 基本概念
    • 基本架构
    • 产品优势
    • 产品介绍
    • 应用场景
    • 性能规格说明
  • 典型实践
    • 通过Terraform实现BLB关联监听器、后端服务器、安全组等
    • BLB选型指南
    • 通过应用型BLB实例获取客户端信息
    • 使用IP组功能在跨地域VPC挂载后端服务器
    • 负载均衡安全防护策略
    • 使用IP组功能在同地域跨VPC挂载后端服务器
    • 通过应用型BLB实现多站点托管
    • 健康检查异常排查
    • 通过Terraform管理BLB
  • 操作指南
    • 多用户访问控制
    • 负载均衡专属集群
    • 负载均衡前后端使用协议对应关系
    • BLB监控项说明
    • 访问控制
    • 标签管理
    • 访问日志
    • 使用VPC流日志记录访问日志
    • 实名认证
    • 扩展域名
    • 应用型BLB实例
    • 服务发布点
    • 普通型IPv6 BLB实例
    • 应用型IPv6实例
    • 定制配置
    • IP组使用指南
    • 普通型BLB实例
      • 创建BLB普通型实例
      • 管理BLB普通型实例
  • 服务等级协议SLA
    • 百度云负载均衡可信云认证服务可用性说明
    • LBDC服务等级协议SLA
    • BLB服务等级协议SLA(V2.0)
  • API参考
    • 访问控制
    • 简介
    • 文档更新记录
    • 附录
    • 接口规范
    • API服务域名
    • 错误码
    • 应用型IPv6BLB接口
      • 应用型IPv6BLB监听器相关接口
      • 应用型IPv6BLB安全组相关接口
      • 应用型IPv6BLB实例相关接口
      • 应用型IPv6BLB服务器组相关接口
    • 普通型BLB接口
      • 普通型BLB实例相关接口
      • 普通型BLB安全组相关接口
      • 普通型BLB监听器相关接口
      • 普通型BLB后端服务器相关接口
    • 服务发布点接口
      • 服务发布点相关接口
    • 负载均衡专属集群LBDC接口
      • LBDC实例相关接口
    • BLB订单相关接口
      • BLB询价
      • BLB计费变更-后付费转预付费
      • BLB计费变更-预付费转后付费
      • BLB-变配
      • BLB计费变更-取消预付费转后付费
      • BLB退订接口
    • 应用型BLB接口
      • 应用型BLB服务器组相关接口
      • 应用型BLB实例相关接口
      • 应用型BLB监听器相关接口
      • 应用型BLB安全组相关接口
    • 普通型IPv6BLB接口
      • 普通型IPv6BLB相关接口
  • 常见问题
    • 计费类问题
    • 负载均衡专属集群类问题
    • 一般类问题
    • 常见问题总览
    • 性能类问题
    • 安全类问题
    • 配置类问题
    • 故障类问题
  • 产品定价
    • 负载均衡实例计费
    • 负载均衡专属集群计费
  • SDK
    • Python-SDK
      • 普通型blb实例
      • 负载均衡专属集群LBDC
      • 应用型blb实例
      • IPv6型BLB实例
      • 服务发布点
      • 初始化
      • 版本更新说明
      • 安装
      • 概述
    • Java-SDK
      • 普通型BLB实例
      • 负载均衡专属集群LBDC
      • 应用型BLB实例
      • IPv6型BLB实例
      • 服务发布点
      • 初始化
      • 版本更新说明
      • 安装SDK工具包
      • 概述
    • GO-SDK
      • 普通型blb实例
      • 负载均衡专属集群LBDC
      • 应用型blb实例
      • 版本变更记录
      • IPv6型BLB实例
      • 服务发布点
      • 初始化
      • 安装
      • 概述
    • PHP-SDK
      • 普通型blb实例
      • 初始化
      • 安装
      • 概述
  • 文档中心
  • arrow
  • 负载均衡BLB
  • arrow
  • 典型实践
  • arrow
  • 通过应用型BLB实例获取客户端信息
本页目录
  • 1. 获取源IP
  • 2. 获取协议信息

通过应用型BLB实例获取客户端信息

更新时间:2025-08-21

场景介绍

在负载均衡中分析客户端信息是为了更智能地分配请求,提高系统的性能、可靠性和用户体验,能够实现:帮助负载均衡器选择合适的后端服务器来处理请求。例如,可以基于客户端IP地址、用户会话信息或地理位置等因素进行路由决策,将请求分配给最适合处理的服务器;增强安全性。例如,可以根据客户端的地理位置或IP地址进行访问控制,防范恶意行为或DDoS攻击等能力。本文将介绍如何使用BLB自带的功能分析用户信息。

基本原理

由于BLB7层监听器(http/https)在转发时会改写客户端源IP信息,后端服务器收到请求的实际源IP为BLB自留100.64.0.0/16网段地址,负载均衡的7层监听器(HTTP/HTTPS)监听器支持在转发请求时将客户端真实IP写到header:X-Forwarded-For处,支持将监听器协议写到header:X-Forwarded-Proto处。这样,后端在接收到请求时,可以根据这两个头信息记录和分析来访客户端的特征。

本文将基于CentOS BCC上配置Nginx服务器为例,演示如何获取客户端信息。

准备工作

您需要先创建好应用型BLB实例,配置好7层监听器(HTTP或HTTPS),在监听器上配置好对应的服务器组或IP组,详见:应用型BLB指导文档

配置服务器

  1. 在与BLB实例同VPC环境下,购买BCC实例,此处选择CentOS 7.6镜像,详见:快速配置Linux云服务器
  2. 将BCC实例添加为BLB实例的后端服务器,详见:应用型BLB指导文档
  3. 将此服务器所在服务器组与监听器关联,并开启
  4. 登录BCC实例,执行以下命令行配置Nginx和http_realip_module yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    wget http://nginx.org/download/nginx-1.17.0.tar.gz
    tar zxvf nginx-1.17.0.tar.gz
    cd nginx-1.17.0
    ./configure --prefix=/path/server/nginx --with-http\_stub\_status\_module --without-http-cache --with-http\_ssl\_module --with-http\_realip\_module
    make
    make install
    说明:下载Nginx相关包需要公网环境

配置服务端获取客户端信息

执行以下命令,打开nginx.conf文件。 vi /path/server/nginx/conf/nginx.conf

  • 按i进入编辑模式,在以下 server 配置信息后添加新的配置字段和信息。

    NGINX
    1server {
    2    listen 80;  
    3    server_name localhost;
    4}

1. 获取源IP

Plain Text
1在Server字块中需要添加的配置字段和信息:
2```NGINX
3set_real_ip_from  100.64.0.0/10;
4real_ip_header X-Forwarded-For;
5```
6 在location / 字块中需要添加的配置字段和信息:
7 ```NGINX
8  location / {
9    # 获取真实IP
10    set $real_ip $remote_addr;
11
12    # 如果启用了realip模块,可以使用如下变量
13    # set $real_ip $realip_remote_addr;
14
15    # 在这里可以使用$real_ip进行进一步的处理
16    # 例如,将其传递给后端服务器或记录日志等
17}
18```
  • 说明

    • 您可以将代理服务器的网段添加到 set_real_ip_from <IP_cidr>,以便获取代理服务器的IP地址。例如,添加 应用型BLB 的IP地址段(100.64.0.0/10是 应用型BLB的保留地址,其他用户无法分配到该网段内,不会存在安全风险)。
    • 如为应用型IPv6BLB,此处网段为:2403:ed40:f200::/40
    • listen 80 如果监听端口非80,请替换为后端服务器的实际端口。
    • 多个IP地址段之间使用逗号分隔。

2. 获取协议信息

在 location / 字块中需要添加的配置字段和信息:

Nginx
1        # 获取X-Forwarded-Proto的值
2        set $real_proto $http_x_forwarded_proto;
3
4        # 如果X-Forwarded-Proto未设置,则使用实际协议
5        if ($real_proto = "") {
6            set $real_proto $scheme;
7        }
8
9        # 现在$real_proto包含X-Forwarded-Proto或实际协议
10        # 在这里可以使用$real_proto进行进一步的处理
11        # 例如,判断是否为HTTPS协议等 
  • 按ESC退出编辑模式。
  • 输入:wq保存并退出文件。
  • 执行以下命令,启动 Nginx。
    /path/server/nginx/sbin/nginx
  • 执行以下命令,查看 Nginx 的访问日志,您可以获取真实的客户端 IP和协议。
    cat /path/server/nginx/logs/access.log

配置Proxy Protocol协议获取客户端信息

  • 第一步:为监听开启Proxy Protocol
  • 第二步:后端服务器开启Proxy Protocol
  • 第三步:在后端服务器上抓包,获得ClientIP,验证后端服务器获取客户端真实IP

上一篇
BLB选型指南
下一篇
使用IP组功能在跨地域VPC挂载后端服务器