使用阿里云NLB获取客户端原地址

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 本文为您介绍NLB如何获取客户端真实IP,及通过Proxy Protocol获取客户端真实IP的场景和配置教程。

1.NLB如何获取客户端真实IP

之前阿里云获取真是客户端地址需要开启pp(proxy protocol)协议,但在近期阿里云支持了原地址透传在后端服务器上获取的源IP即为客户端真实IP。无需在监听开启Proxy Protocol了,所以在这里特殊说明一下,只需要在创建服务器组的时候勾选开启客户端地址保持即可。
image.png

  • 以下场景中,NLB无法实现源地址透传,您需要在监听开启Proxy Protocol来获取客户端真实IP。
场景 说明
场景一 客户端使用IPv6地址访问NLB后端的IPv4服务

场景二 | 开启TCPSSL监听TCPSSL监听不能选择已开启客户端地址保持功能的服务器组。|
|场景三|挂载IP类型的后端服务IP类型的服务器组不支持开启客户端地址保持功能。NLB实例挂载了IP类型的后端服务时,如需获取客户端真实IP,必须在监听开启Proxy Protocol。

2.NLB通过Proxy Protocol获取客户端真实IP的配置教程

2.1 前提条件

  • 现在确保已经创建NLB实例并为该实例添加了监听。
  • 创建可用的服务器组并添加了后端服务器。
    后端服务器已部署应用服务。本文以后端服务器已部署Nginx服务为例,具体操作,请参见部署LNMP环境(CentOS 7)。

启用Proxy Protocol之前,请确保您的后端服务器支持Proxy Protocol v2版本,否则会导致新建连接失败。

说明
Nginx Plus R16及以后版本或者开源Nginx 1.13.11及以后版本支持Proxy Protocol v2版本。

如果实例的多个NLB监听挂载同一组后端服务器,必须将所有实例的监听都开启Proxy Protocol功能。

步骤一:监听开启Proxy Protocol

可以在创建监听或者修改监听时,开启Proxy Protocol。本文以创建监听为例开启Proxy Protocol,如果您已经为目标NLB实例添加监听但未开启Proxy Protocol,您可以在修改监听时开启Proxy Protocol。更多信息,请参见修改监听。

登录网络型负载均衡NLB控制台。
在顶部菜单栏,选择NLB实例所属的地域。

  • 在实例页面,找到目标实例,选择以下一种方法,打开监听配置向导。
  • 在操作列单击创建监听。
  • 单击实例ID,然后单击监听页签,在监听页签,单击监听列表上方的创建监听。
  • 单击实例ID,在实例详情页单击配置向导中的创建监听。
  • 单击实例ID,在实例详情页的右上角单击创建监听。
    在配置监听配置向导页面,完成参数配置,然后单击下一步。

单击高级配置右侧的修改,打开开启ProxyProtocol开关,开启后NLB可以通过Proxy Protocol协议携带客户端真实IP至后端服务器。

可选:在配置SSL证书配置向导页面,选择服务器证书并设置高级配置参数。

仅TCPSSL监听需要执行该步骤。更多信息,请参见创建TCPSSL监听。

在选择服务器组配置向导页面,选择已创建的服务器组,查看后端服务器信息,然后单击下一步。

在配置审核配置向导页面,确认配置信息,单击提交。

步骤二:为后端服务器的监听服务开启Proxy Protocol

在监听开启Proxy Protocol 后,后端服务器的监听服务也需要开启Proxy Protocol,否则将出现转发不通或健康检查失败等问题。

登录后端服务器,执行以下命令,开启Proxy Protocol获取客户端真实IP。

http {
   
   
    #...
    server {
   
   
        listen 80   proxy_protocol;
        listen 443  ssl proxy_protocol;
        #...
    }
}

stream {
   
   
    #...
    server {
   
   
        listen 12345 proxy_protocol;
        #...
    }
}

步骤三:获取客户端真实IP
携带客户端IPv4地址的Proxy Protocol v2二进制头格式如下所示:IPv4
image.png

携带客户端IPv6地址的Proxy Protocol v2二进制头格式如下所示:IPv6
image.png

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4天前
|
负载均衡 算法 网络协议
阿里云slb中的lvs介绍
【10月更文挑战第17天】
12 2
|
4天前
|
弹性计算 负载均衡 监控
阿里云slb的slb-backend介绍
【10月更文挑战第17天】
17 2
|
4天前
|
弹性计算 负载均衡 监控
阿里云slb的slb-api介绍
【10月更文挑战第17天】
12 1
|
23天前
|
弹性计算 负载均衡 算法
负载均衡如何帮助阿里云国际服务器搭建的网站或应用程序?
负载均衡如何帮助阿里云国际服务器搭建的网站或应用程序?
|
2月前
|
负载均衡 Java 开发者
Ribbon框架实现客户端负载均衡的方法与技巧
Ribbon框架为微服务架构中的客户端负载均衡提供了强大的支持。通过简单的配置和集成,开发者可以轻松地在应用中实现服务的发现、选择和负载均衡。适当地使用Ribbon,配合其他Spring Cloud组件,可以有效提升微服务架构的可用性和性能。
28 0
|
3月前
|
应用服务中间件 nginx
阿里云——SLB踩坑记录
阿里云——SLB踩坑记录
93 1
阿里云——SLB踩坑记录
|
3月前
|
负载均衡 Cloud Native 容灾
阿里云负载均衡SLB价格_ALB、NLB和CLB区别_负载均衡详细介绍
阿里云负载均衡SLB提供ALB、NLB和CLB三种类型,分别适用于7层和4层的不同场景。ALB与NLB仅支持按量付费,而CLB则额外提供包年包月选项。ALB强调7层应用处理与高级路由,NLB聚焦4层的大流量处理与SSL卸载。两者均支持自动弹性伸缩,确保高可用性和性能。CLB作为传统负载均衡,适用于特定需求。每种类型依据实例规格与使用量收费,其中公网实例还需支付网络费用。通过这些服务,用户可以实现流量分发、故障转移及提升应用系统的稳定性和扩展性。
|
3月前
|
负载均衡 Cloud Native 容灾
阿里云负载均衡SLB价格_ALB、NLB和CLB区别_负载均衡功能和使用场景说明
阿里云负载均衡SLB分为应用型ALB、网络型NLB及传统型CLB。ALB与NLB仅支持按量付费,而CLB则提供包年包月和按量付费选项。ALB专长于7层HTTP/HTTPS/QUIC协议处理,支持丰富的内容路由功能;NLB聚焦于4层TCP/UDP/TCPSSL协议,擅长处理大规模并发连接。两者均基于NFV技术,支持自动弹性伸缩,并与云原生环境如ACK/SAE/K8S深度集成。此外,SLB提供多协议支持、多级容灾、安全防护等功能,确保服务的高可用性和安全性。具体收费方面,ALB的基础版实例费为0.049元/小时起,NLB实例费限时免费,两者还需支付性能容量单位LCU费及公网网络费(仅公网实例)
|
4月前
|
缓存 负载均衡 算法
微服务之客户端负载均衡
微服务中的客户端负载均衡是指将负载(即工作任务或访问请求)在客户端进行分配,以决定由哪个服务实例来处理这些请求。这种负载均衡方式与服务端负载均衡相对,后者是在服务端(如服务器或负载均衡器)进行请求的分发。
66 5
|
4月前
|
域名解析 负载均衡 网络协议