如何将 Cloudflare IP 存储为 Nginx 中的附加 FastCGI 参数?

如何将 Cloudflare IP 存储为 Nginx 中的附加 FastCGI 参数?

我需要能够知道与我的服务器建立连接的 Cloudflare IP。

这样我就可以确定是否通过 Tor 建立了连接。为此,我需要向工具发送客户端连接到的 IP。这不是我的服务器的 IP,而是 Cloudflare 入口代理的 IP,这就是我尝试通过 fastcgi 传递 Cloudflare IP 的原因。
https://www.torproject.org/projects/tordnsel.html.en

我有一个如下所示的块:

# Preserve Cloudflare IP
fastcgi_param CF-Proxy-IP $remote_addr;
fastcgi_param TEST "abc123";

# CloudFlare
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
real_ip_header CF-Connecting-IP;

但它没有通过,我设置的虚拟标头在中看不到phpinfo()。我不确定我还能做什么,因为通过之后real_ip_header,所有原始 CF 数据都会丢失。

答案1

当您使用 nginx real ip 模块时,nginx$realip_remote_addr在进行 IP 地址替换时会将实际的连接 IP 地址放入变量中。因此,您可以通过设置标头将其传递给您的应用程序:

fastcgi_param CF-Proxy-IP $realip_remote_addr;

此变量需要nginx 1.9.7或更高版本。

相关内容