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