问题描述
在使用 cloudflare 服务之前,我有几个问题。
-
Web 服务器使用
cf-connecting-ip
、x-forwarded-for
等与 Web 不使用这些类型的东西之间的 http 请求标头有什么区别吗? -
客户端可以/如何知道网络服务器使用
cf-connecting-ip
、x-forwarded-for
等?
解决方法
这些请求标头特定于网络代理,并在 Cloudflare 收到请求后附加到您的源。用户无法看到它,除非您的网络服务器出于某种原因将其发回。
x-forwarded-for
:https://en.wikipedia.org/wiki/X-Forwarded-For
代理服务器使用它来告诉源在用户和源之间中继请求所涉及的任何 HTTP 服务器。您可能会在此标头中看到 1 组或多组 IP 地址。
cf-connecting-ip
:
将连接到 Cloudflare 的用户的 IP 中继到源站服务器
CF-Connecting-IP 提供客户端(访问者)IP 地址(连接 到 Cloudflare)到源 Web 服务器。 cf-connecting-ip 包含一个 请求时的特殊 Cloudflare IP 2a06:98c0:3600:0:0:0:0:103 源自 Cloudflare Workers 子请求而不是 访问者的真实IP。
示例:
CF-连接-IP:203.0.113.1
X-Forwarded-For 维护代理服务器和原始访问者 IP 地址。如果文件中没有现有的 X-Forwarded-For 标头 请求发送到 Cloudflare,X-Forwarded-For 具有相同的值 CF-Connecting-IP 标头:
示例:
X-Forwarded-For: 203.0.113.1 如果 X-Forwarded-For 标头已经存在 出现在对 Cloudflare 的请求中,Cloudflare 会附加 IP HTTP 代理到标头的地址:
示例:
X-Forwarded-For: 203.0.113.1,198.51.100.101,198.51.100.102 在 上面的例子,203.0.113.1是原始访问者IP地址, 198.51.100.101 和 198.51.100.102 是通过 X-Forwarded-For 标头提供给 Cloudflare 的代理服务器 IP 地址。
因此,请查看您的应用程序并查看它是否取决于用户的 IP,如果是这样,您将需要修改您的网络服务器配置以中继正确的 IP。
要在源站 Web 服务器上恢复原始访问者 IP 地址, Cloudflare 建议您查看日志或应用程序 CF-Connecting-IP 或 True-Client-IP 而不是 X-Forwarded-For 因为 CF-Connecting-IP 和 True-Client-IP 格式一致 只包含一个IP。