内容提要
本文介绍了OpenResty Edge处理客户端真实IP的四种方案:Proxy Protocol、X-Forwarded-For、X-Real-IP和自定义头。每种方案适用于不同的代理拓扑,文中详细说明了配置步骤和安全注意事项,以确保准确还原用户真实IP,支持访问控制和限速等功能。
关键要点
-
在引入前置代理、CDN 或四层负载均衡后,网关收到的客户端地址往往变成代理服务器的 IP,导致基于用户真实 IP 的限速、访问控制和审计日志失效。
-
OpenResty Edge 支持四种真实 IP 还原方案:Proxy Protocol、X-Forwarded-For、X-Real-IP 和自定义头,适用于不同的代理拓扑和协议层。
-
Proxy Protocol 适用于四层 TCP/UDP Stream 代理,前置代理在建立 TCP 连接时注入一行标准化的 PROXY 头,网关解析该头部以提取真实 IP。
-
X-Real-IP 方案适用于前置代理负责将真实客户端 IP 写入该头的场景,但不同上游代理的实现行为存在差异。
-
X-Forwarded-For 方案适用于多级 HTTP 代理链路,每经过一个代理节点,该节点将入站 IP 追加至 X-Forwarded-For 头末尾。
-
自定义头方案允许运维人员指定任意 HTTP 头字段名称作为真实 IP 来源,适用于内部系统已有私有 IP 传递规范的场景。
-
在 OpenResty Edge 中,必须在端口级别启用 proxy protocol 支持,并在全局配置中选择实际使用的方案。
-
配置可信来源 IP 列表,以确保只有来自可信地址的请求头中的真实 IP 会被采信并更新 client-addr。
-
通过 curl 等工具可以验证不同方案的效果,确保真实 IP 的传递和还原正确。
-
OpenResty Edge 还支持在回源请求中通过自定义请求头将真实客户端 IP 透传给后端服务器。
延伸解读
真实 IP 还原的重要性
在现代网络架构中,准确还原客户端的真实 IP 地址对于实施访问控制、限速和审计日志至关重要。若未能正确获取真实 IP,可能导致安全漏洞和资源滥用。因此,选择合适的 IP 传递方案是确保系统安全和性能的基础。
不同方案的适用场景
OpenResty Edge 提供的四种真实 IP 还原方案各有其适用场景。Proxy Protocol 适合四层代理,而 X-Forwarded-For 和 X-Real-IP 更适用于 HTTP 代理链。运维人员需根据具体的代理拓扑和需求选择合适的方案,以确保系统的稳定性和安全性。
配置可信来源 IP 的必要性
在配置真实 IP 还原方案时,设置可信来源 IP 列表是防止伪造头部的重要步骤。只有来自可信地址的请求头中的真实 IP 才会被采信,这样可以有效抵御潜在的安全威胁,确保系统的正常运行和数据的准确性。
延伸问答
OpenResty Edge 如何处理客户端真实 IP 的传递?
OpenResty Edge 支持四种方案:Proxy Protocol、X-Forwarded-For、X-Real-IP 和自定义头,适用于不同的代理拓扑和协议层。
Proxy Protocol 的工作原理是什么?
Proxy Protocol 在建立 TCP 连接时注入一行标准化的 PROXY 头,网关解析该头部以提取真实 IP。
X-Forwarded-For 方案适用于哪些场景?
X-Forwarded-For 适用于多级 HTTP 代理链路,每经过一个代理节点,该节点将入站 IP 追加至该头末尾。
如何在 OpenResty Edge 中配置可信来源 IP 列表?
在 Global Config 页面中输入前置代理服务器的 IP 地址,只有在此列表中的 IP 才会被采信并更新 client-addr。
使用 curl 如何验证不同的 IP 传递方案?
可以通过 curl 携带不同的头部,如 X-Forwarded-For、X-Real-IP 等,来验证真实 IP 的传递和还原是否正确。
自定义头方案的适用场景是什么?
自定义头方案适用于内部系统已有私有 IP 传递规范的场景,允许运维人员指定任意 HTTP 头字段名称作为真实 IP 来源。