CN111343293A - 一种基于Kong网关获取客户端IP的方法 - Google Patents

一种基于Kong网关获取客户端IP的方法 Download PDF

Info

Publication number
CN111343293A
CN111343293A CN202010085252.4A CN202010085252A CN111343293A CN 111343293 A CN111343293 A CN 111343293A CN 202010085252 A CN202010085252 A CN 202010085252A CN 111343293 A CN111343293 A CN 111343293A
Authority
CN
China
Prior art keywords
client
forwarded
proxy
add
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010085252.4A
Other languages
English (en)
Inventor
张鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Shouqi Zhixing Technology Co Ltd
Original Assignee
Beijing Shouqi Zhixing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Shouqi Zhixing Technology Co Ltd filed Critical Beijing Shouqi Zhixing Technology Co Ltd
Priority to CN202010085252.4A priority Critical patent/CN111343293A/zh
Publication of CN111343293A publication Critical patent/CN111343293A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/59Network arrangements, protocols or services for addressing or naming using proxies for addressing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/30Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
    • H04L63/306Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information intercepting packet switched data communications, e.g. Web, Internet or IMS communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/668Internet protocol [IP] address subnets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Technology Law (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开的基于Kong网关获取客户端IP的方法,涉及网络技术领域,通过为IP数组proxy_add_x_forwarded_for设置环境参数is_first并根据该环境参数is_first解析IP数组proxy_add_x_forwarded_for,适用于Kong网关未被代理及被代理的场景,提高了兼容性。

Description

一种基于Kong网关获取客户端IP的方法
技术领域
本发明属于网络技术领域,具体涉及一种基于Kong网关获取客户端IP的方法。
背景技术
随着移动互联网技术的深入应用,基于前后台分离的应用场景越来越多。通过API-gateway管控后台接口的方式变得尤为重要,Kong网关作为API-gateway,就是其中最突出的一款产品形态。通过API-gateway可以实现对后台节点的如下管控:IP限流、IP黑白名和服务降级等。
Kong网关作为一种API-gateway开源技术,已实现了对HTTP请求的限流和和黑白名单控制。
在使用Kong网关的过程中,当Kong网关被反向代理服务器代理后,HTTP请求经过一层或者多层反向代理(如Openresty),请求到Kong网关上,Kong网关再路由请求到后台节点,此时获取不到用户端的真实IP,导致基于IP的拦截策略失效,如IP限流、IP黑白名单等等都会失效。
现有方案仅从一个维度进行处理,即只是从HTTP请求中提取固定IP remote_addr的值,不适Kong网关被代理的场景,兼容性较差。
发明内容
针对现有技术存在的缺陷,本发明实施例提供了一种基于Kong网关获取客户端IP的方法,该方法包括以下步骤:
接收客户端发送的HTTP请求并从所述HTTP请求的请求头中获取IP数组proxy_add_x_forwarded_for;
判断IP数组proxy_add_x_forwarded_for是否为空,若是,则从所述HTTP请求中提取远程IP remote_addr,将所述远程IP remote_addr中的IP作为客户端IP;
如否,则解析IP数组proxy_add_x_forwarded_for,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP。
优选地,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP包括:
获取所述IP数组proxy_add_x_forwarded_for中预设的环境参数is_first,当环境参数is_first为真时,将所述IP数组proxy_add_x_forwarded_for中的第一个IP作为客户端IP。
优选地,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP还包括:
当环境参数is_first为假时,将所述IP数组proxy_add_x_forwarded_for中的最后一个IP作为客户端IP。
优选地,在获取到客户端IP之后,所述方法还包括:
根据所述客户端IP的拦截策略,处理所述HTTP请求。
本发明实施例提供的基于Kong网关获取客户端IP的方法具有以下有益效果:
通过为IP数组proxy_add_x_forwarded_for设置环境参数is_first并根据该环境参数is_first解析IP数组proxy_add_x_forwarded_for,适用于Kong网关未被代理及被代理的场景,提高了兼容性。
具体实施方式
以下结合具体实施例对本发明作具体的介绍。
本发明实施例提供的基于Kong网关获取客户端IP的方法包括以下步骤:
S101,接收客户端发送的HTTP请求并从HTTP请求的请求头中获取IP数组proxy_add_x_forwarded_for。
其中,x_forwarded_for头域是为了说明请求经过了哪些服务器。
如果HTTP请求中不包含x_forwarded_for头域,则设置x_forwarded_for头域值为客户端的IP。
如果HTTP请求中包含x_forwarded_for头域,则设置x_forwarded_for头域值为之前该头域的值后面添加客户端的IP,用逗号分割。在proxy_add_x_forwarded_for中,x_forwarded_for简称xff头,代表客户端的真实IP,只有在通过了HTTP代理或者负载均衡服务器时才会添加该项。标准格式如下:
x_forwarded_for:client1,proxy1,proxy2。
从该标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端IP,剩下的就是曾经经过的代理或负载均衡的IP地址,经过几个就会出现几个。
S102,判断IP数组proxy_add_x_forwarded_for是否为空,若是,则从HTTP请求中提取远程IP remote_addr,将远程IP remote_addr中的IP作为客户端IP。
其中,remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的IP指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx、Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP。
S103,如IP数组proxy_add_x_forwarded_for是不为空,则解析IP数组proxy_add_x_forwarded_for,从IP数组proxy_add_x_forwarded_for中获取客户端IP。
可选地,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP包括:
获取所述IP数组proxy_add_x_forwarded_for中预设的环境参数is_first,当环境参数is_first为真时,将所述IP数组proxy_add_x_forwarded_for中的第一个IP作为客户端IP。
可选地,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP还包括:
当环境参数is_first为假时,将所述IP数组proxy_add_x_forwarded_for中的最后一个IP作为客户端IP。
可选地,在获取到客户端IP之后,该方法还包括:
根据所述客户端IP的拦截策略,处理所述HTTP请求。
本发明实施例提供的基于Kong网关获取客户端IP的方法,通过为IP数组proxy_add_x_forwarded_for设置环境参数is_first并根据该环境参数is_first解析IP数组proxy_add_x_forwarded_for,适用于Kong网关未被代理及被代理的场景,提高了兼容性。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
需要说明的是,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。

Claims (5)

1.一种基于Kong网关获取客户端IP的方法,其特征在于,包括:
接收客户端发送的HTTP请求并从所述HTTP请求的请求头中获取IP数组proxy_add_x_forwarded_for;
判断IP数组proxy_add_x_forwarded_for是否为空,若是,则从所述HTTP请求中提取固定IP remote_addr,将所述固定IP remote_addr作为客户端IP;
若否,则解析IP数组proxy_add_x_forwarded_for,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP。
2.根据权利要求1所述的基于Kong网关获取客户端IP的方法,其特征在于,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP包括:
获取所述IP数组proxy_add_x_forwarded_for中预设的环境参数is_first,当环境参数is_first为真时,将所述IP数组proxy_add_x_forwarded_for中的第一个IP作为客户端IP。
3.根据权利要求1所述的基于Kong网关获取客户端IP的方法,其特征在于,从所述IP数组proxy_add_x_forwarded_for中获取客户端IP还包括:
当环境参数is_first为假时,将所述IP数组proxy_add_x_forwarded_for中的最后一个IP作为客户端IP。
4.根据权利要求1-3任一项所述的基于Kong网关获取客户端IP的方法,其特征在于,在获取到客户端IP之后,所述方法还包括:
根据所述客户端IP的拦截策略,处理所述HTTP请求。
5.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4所述的步骤。
CN202010085252.4A 2020-02-10 2020-02-10 一种基于Kong网关获取客户端IP的方法 Pending CN111343293A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010085252.4A CN111343293A (zh) 2020-02-10 2020-02-10 一种基于Kong网关获取客户端IP的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010085252.4A CN111343293A (zh) 2020-02-10 2020-02-10 一种基于Kong网关获取客户端IP的方法

Publications (1)

Publication Number Publication Date
CN111343293A true CN111343293A (zh) 2020-06-26

Family

ID=71185348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010085252.4A Pending CN111343293A (zh) 2020-02-10 2020-02-10 一种基于Kong网关获取客户端IP的方法

Country Status (1)

Country Link
CN (1) CN111343293A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259386A (zh) * 2021-06-21 2021-08-13 易纳购科技(北京)有限公司 恶意请求拦截方法、装置及计算机设备
CN114222002A (zh) * 2020-09-04 2022-03-22 飞狐信息技术(天津)有限公司 业务请求处理方法及装置、存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150012964A1 (en) * 2013-07-03 2015-01-08 Fortinet, Inc. Application layer-based single sign on
CN107566203A (zh) * 2016-07-01 2018-01-09 北京京东尚科信息技术有限公司 一种线上服务测试方法及系统
US20180109559A1 (en) * 2016-10-17 2018-04-19 Akamai Technologies, Inc. Detecting device masquerading in application programming interface (API) transactions
US10356050B1 (en) * 2016-09-20 2019-07-16 Amazon Technologies, Inc. Mitigation of data leakage in HTTP headers
CN110753127A (zh) * 2019-10-29 2020-02-04 浪潮云信息技术有限公司 基于Kong的API网关实现请求参数转换的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150012964A1 (en) * 2013-07-03 2015-01-08 Fortinet, Inc. Application layer-based single sign on
CN107566203A (zh) * 2016-07-01 2018-01-09 北京京东尚科信息技术有限公司 一种线上服务测试方法及系统
US10356050B1 (en) * 2016-09-20 2019-07-16 Amazon Technologies, Inc. Mitigation of data leakage in HTTP headers
US20180109559A1 (en) * 2016-10-17 2018-04-19 Akamai Technologies, Inc. Detecting device masquerading in application programming interface (API) transactions
CN110753127A (zh) * 2019-10-29 2020-02-04 浪潮云信息技术有限公司 基于Kong的API网关实现请求参数转换的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JUNWEI_7702: "Nginx做反向代理和负载均衡时"X-Forwarded-For"信息头的处理", 《51CTO博客》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114222002A (zh) * 2020-09-04 2022-03-22 飞狐信息技术(天津)有限公司 业务请求处理方法及装置、存储介质及电子设备
CN114222002B (zh) * 2020-09-04 2024-03-08 飞狐信息技术(天津)有限公司 业务请求处理方法及装置、存储介质及电子设备
CN113259386A (zh) * 2021-06-21 2021-08-13 易纳购科技(北京)有限公司 恶意请求拦截方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
EP3391627B1 (en) Shared multi-tenant domain name system (dns) server for virtual networks and corresponding method
TWI656772B (zh) 獲取網頁的方法、系統、網路伺服器、瀏覽器和gslb
CN106534243B (zh) 基于http协议的缓存、请求、响应方法及相应装置
CN102301682B (zh) 网络缓存方法和系统及dns重定向子系统
US9871850B1 (en) Enhanced browsing using CDN routing capabilities
WO2017054526A1 (zh) 一种arp条目生成方法和装置
JP2016538669A (ja) 通知ベースの無効化を伴うコンテンツのキャッシングのためのシステム及び方法
CN108156013A (zh) 一种页面服务容灾方法、装置及电子设备
CN109257451B (zh) 对应关系解析方法及设备
US20140122723A1 (en) Dynamic registration of listener resources for cloud services
CN107888717B (zh) 一种域名确定方法、装置及电子设备
CN113452780B (zh) 针对客户端的访问请求处理方法、装置、设备及介质
CN113315706B (zh) 私有云流量控制方法、设备及系统
CN111343293A (zh) 一种基于Kong网关获取客户端IP的方法
US10404651B2 (en) Domain name system network traffic management
WO2013188981A1 (en) Common web accessible data store for client side page processing
JP6666441B2 (ja) Ipアドレス取得方法及び装置
CN107948234B (zh) 数据的处理方法及装置
CN106919595B (zh) 一种用于Cookie映射的方法、装置及电子设备
CN111818038B (zh) 一种网络数据获取识别方法以及装置
JP2023522785A (ja) 調和総合プロキシサービス
KR101963181B1 (ko) 웹 프록시를 통한 광고 전송 시스템 및 그 방법
CN117453380B (zh) 集群的容器组调度方法、系统以及计算机设备
CN112243048B (zh) 数据传输方法、相关设备、系统以及计算机可读存储介质
CN114268605B (zh) 一种智能dns实现方法、装置及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200626