首页 > 其他分享 >后端服务获取客户端IP的一些注意事项

后端服务获取客户端IP的一些注意事项

时间:2024-03-15 18:48:25浏览次数:20  
标签:HTTP -- IP IP地址 获取 注意事项 客户端

后端服务获取客户端IP的一些注意事项

​#Gin#​ #HTTP#​ #WEB#​

背景

在典型的WEB后端服务中, 怎样才能获取到客户端IP呢?

同事最近在尝试进行负载均衡时, 有一个这样的需求.

但是需要注意的是, 在现在越来越负载的网络环境中, 真的能够准确的获取客户端IP吗?

方案

首先我们要确定一点, HTTP协议协议中是不会直接写入发起方的IP的, 我们需要一些更加特别的方式才可以获取到

通过TCP/IP获取

Gin​框架中, 提供了RemoteIP()​来获取客户端的IP

--- title: Gin获取RemoteIp的方式 --- flowchart LR Server --> HTTP.Request --> RawConn --> IP:Port

通过Header获取

在目前常见的一些负载均衡器中(例如nginx / k8s ingress), 直接通过TCP连接获取到的IP地址往往是负载均衡器的IP地址,而不是最终用户的实际IP地址。这是因为负载均衡器作为中介,客户端与服务器之间的连接是通过负载均衡器建立的。因此,从服务器的角度来看,所有的请求似乎都来自于负载均衡器。

为了解决这个问题, 可以通过HTTP头部的一些字段间接地获取到客户端的IP地址。这通常通过以下HTTP头部字段实现:

  1. X-Forwarded-For​: 当使用HTTP代理或负载均衡器时,这个字段会包含原始客户端的IP地址。如果请求经过了多个代理,X-Forwarded-For​可能包含一个IP地址列表,链条中的每个代理都会把客户端的IP地址追加到列表的末尾。
  2. X-Real-IP​: 类似于X-Forwarded-For​,这个字段也是用于标识客户端的原始IP地址,但通常只包含一个IP地址,用在一些代理服务器中。
  3. Forwarded​: 这是一个相对较新的HTTP头部字段,用于提供关于代理的信息,包括客户端IP。它的格式通常是Forwarded: for=<clientIP>​。

Gin​中, 实现了这个功能, 通过clientIP()​来获取此IP

--- title: Gin获取ClientIp的方式 --- flowchart LR Server --> HTTP.Request --> RawConn --> IP:Port HTTP.Request --> Header --> Node["client Ip"]

总结

以上简单的介绍了目前获取客户端IP的一些简单的方式, 在实际的工作中, 需要注意对于客户端IP的需求等级, 更加建议使用ClientIP​获取, 以获得最准确的结果.

标签:HTTP,--,IP,IP地址,获取,注意事项,客户端
From: https://www.cnblogs.com/pDJJq/p/18076008/some-precautions-for-the-back-end-service-to-obta

相关文章

  • 后端服务获取客户端IP的一些注意事项
    后端服务获取客户端IP的一些注意事项​#Gin#​#HTTP#​#WEB#​背景在典型的WEB后端服务中,怎样才能获取到客户端IP呢?同事最近在尝试进行负载均衡时,有一个这样的需求.但是需要注意的是,在现在越来越负载的网络环境中,真的能够准确的获取客户端IP吗?方案首先我们要确......
  • 后端服务获取客户端IP的一些注意事项
    后端服务获取客户端IP的一些注意事项​#Gin#​#HTTP#​#WEB#​背景在典型的WEB后端服务中,怎样才能获取到客户端IP呢?同事最近在尝试进行负载均衡时,有一个这样的需求.但是需要注意的是,在现在越来越负载的网络环境中,真的能够准确的获取客户端IP吗?方案首先我们要确......
  • eclipse2023安装包下载及安装教程
    下载链接https://docs.qq.com/doc/DTFlhRURaZmdPZXNt1.选中下载好的安装包,右键解压到“eclipse2023”文件夹2.选中“jdk-21_windows-x64_bin.exe”右键以管理员身份运行3.点击“下一步”4.选择安装位置,点击“下一步”(建议和我的保持一致)5.软件正在安装,很快......
  • 煤矿安全问题注意事项
    煤矿安全问题注意事项下井安全问题。带好设备,安全帽,矿灯,自救器。在井下,特别在行走时,在井下干活时,一定一定不能摘下来,本人已多次发生碰头事件,而且矿上设备大都是铁,石头等坚硬的东西,一定不能摘下安全帽。在井下行走时。有些路程较远,走路时不能走神,井下道路狭窄,灯光昏暗,路况较差,......
  • 洛谷题单指南-二叉树-P1030 [NOIP2001 普及组] 求先序排列
    原题链接:https://www.luogu.com.cn/problem/P1030题意解读:已知中序、后序,求先序。解题思路:与洛谷题单指南-二叉树-P1827[USACO3.4]美国血统AmericanHeritage非常类似,不在介绍过程,直接给出代码。100分代码:#include<bits/stdc++.h>usingnamespacestd;stringin,post......
  • 在专业iPaaS厂商与大型软件企业间如何选择
    一. 什么是iPaaS产品专业厂商?专业iPaaS厂商指的是那些只专注于投入到iPaaS产品研发的创新型企业。这些专业公司不仅具备了丰富的行业集成经验和深厚的专业知识,更以其独特的视角和专注的态度,成为了iPaaS领域的佼佼者。相比于那些综合性软件企业,他们更加专注于iPaaS产品的研发和创......
  • Preview pipeline: Display_Out SetupTargetBuffer
    camx/src/core/hal/camxhaldevice.cppCamxResultHALDevice::ProcessCaptureRequest(Camera3CaptureRequest*pRequest){result=GetCHIAppCallbacks()->chi_override_process_request(reinterpret_cast<constcamera3_device*>(&m_c......
  • AXI DMA IP核使用方法
    一、引言    本文为个人理解,用于记录学习经验,有任何错误可以指出讨论。二、实验目的        将PL端数据通过AXIDMA上传至PS端,输入数据为axistream接口。三、数据流向AXIS_MM2S/AXIS_S2MM:  外设数据总线,用于读写数据,无需地址。AXI_MM2S/AXI_S2M......
  • Write failed: Broken pipe > Couldn‘t read packet: Connection reset by peer SFTP
    如果你链接服务器的时候出现下面的提示:Writefailed:BrokenpipeCouldn’treadpacket:Connectionresetbypeer这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root,权限是750或者755。......
  • iis使用动态 IP 限制
     使用动态IP限制(下载页面提示已停用)https://www.iis.net/downloads/microsoft/dynamic-ip-restrictionshttps://learn.microsoft.com/en-us/iis/manage/configuring-security/using-dynamic-ip-restrictions特征动态IP限制模块包括以下主要功能:根据并发请求数......