Cloudflare > Nginx 反向代理 (NPM) > Digital Ocean 特定问题



我遇到了这个非常具体的问题。我会尽力描述交易内容。

我正在NGINX反向代理后面的Digital Ocean上运行一台服务器(配置是通过NGINX代理管理器完成的(。我在cloudflare(mydomain.com(中创建了一个指向数字水滴IP的记录。一切正常:

来自互联网的请求>CLOUDFLARE代理>NGINX反向代理>数字海洋服务器。

但是,当我试图将单个IP地址(例如我的VPN服务器X.X.X.X的地址(放在nginx反向代理访问列表中时(这样只有该IP才能访问服务器(。一切都停止了,我知道为什么。Nginx只等待来自X.X.X.X的请求,因为方案看起来是这样的:

X.X.X.X>CLOUDFLARE代理>NGINX反向代理>数字海洋服务器

NGINX不发送任何响应是合乎逻辑的(因为它正在等待来自X.X.X.X的连接,并且连接来自CLOUDFLARES PROXYS IP(

问题是,当我关闭cloudflare代理(将小橙色云切换到关闭位置(时,服务器没有响应。据我所知,当我关闭它时,连接应该是这样的:

X.X.X.X>NGINX反向代理>数字海洋服务器

有人知道问题出在哪里吗?(我猜我的VPN和NGINX Proxy之间可能还有另一个cloudflare服务器?或者我不知道这类服务器(如果你需要任何其他信息,请告诉我,我会尽力提供一切可能的信息。提前感谢大家。

对于第一种情况(橙色云(,您可以配置NGINX以恢复访问者的原始IP(X.X.X.X(,因为Cloudflare在HTTP标头中提供了这些信息。您可以在本文中看到更多信息,但这里有一个与您的反向代理相关的配置片段:

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 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
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;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
#use any of the following two
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;

此处维护Cloudflare IP范围的列表。

对于第二种情况(灰色云(,听起来X.X.X.X和您的NGINX之间存在连接问题。您需要使用mtr等工具进行诊断,或者查看您在Digitalocean中是否有任何可能阻止流量通过Droplet的防火墙设置。

如果您想考虑一种完全不同的方法来私下连接到您的应用程序,我建议使用以下教程作为替代方案。

多亏了@Paolo的回答,问题才得以解决。我决定从他提供的最简单的案例开始,所以我将所有cloudflare IP范围添加到我的NGINX Revers Proxies访问列表中。因为我在该代理后面运行docker,所以我有几个容器需要是公共的,有些需要是私有的(只能通过我的x.x.x.x VPN访问(

案例#1(橙色云开启(现在我可以从任何IP地址访问我想公开的内容(感谢上面提到的新访问列表(

来自互联网的请求>CLOUDFLARE代理>NGINX反向代理>数字海洋服务器>DOCKER PUBLC CONTAINER

案例#2(灰色云关闭(在@Paolo指出X.X.X.X和NGINX之间可能存在连接问题后,我开始检查所有配置。他是对的,反向代理配置错误。在解决了这个问题后,一切都开始按我的计划进行。(在这种情况下,访问列表已从以前的列表切换为只允许X.X.X.X(

X.X.X.X>NGINX反向代理>数字海洋服务器>DOCKER私人集装箱

感谢大家,特别感谢@Paolo

最新更新