当我访问具有Cloudflare的网站时,使用该网站的IP地址,我会收到以下消息:
Error 1003
Direct IP access not allowed
What happened?
You've requested an IP address that is part of the Cloudflare network.
A valid Host header must be supplied to reach the desired website.
我是一个学生。
发布于 2020-03-26 14:20:11
cloudflare的设置没有什么特别之处。这只是HTTP的一个属性。
当客户端打开URL时,有三个重要步骤:
一个典型的例子如下:
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org
考虑一个有很多网站的大型主机。为了简单起见,假设它只有一个IP地址。数百个域名解析到此地址。服务器如何决定交付哪些页面?它使用客户端在HTTP请求中提供的主机详细信息。如果你要求得到它没有或想给你的东西,它会给你一个错误的反应。
在您的示例中,请求包含主机说明符的IP地址。
GET /whatever HTTP/1.1
Host: a.b.c.d
当主机由IP地址指定时,许多主机决定不分发页面。Cloudflare在这里没有什么特别之处,也与DNS无关。这是关于服务器如何响应IP地址指定的主机请求,您可以看到此错误消息指定了A valid Host header must be supplied
。
下面是一个说明如何以这种方式配置服务器的答案:https://serverfault.com/a/607222
通过使用telnet连接到服务器并手动发出HTTP请求,您可以轻松地验证这种行为。
PS。相同的一般答案适用于HTTPS请求,但在安装过程中使用服务器名称指示。值得注意的是,Host
附带了HTTP1.1 (1997)。在此之前,这里描述的机制并不存在,而且服务器无法可靠地判断客户端是否请求了一个合法解析到其IP地址的名称,或者直接通过IP地址请求主机。由于这是网站爆炸性增长的一个重要发展,许多老客户端被更新以发送Host
。感谢评论员们对细节的了解。
发布于 2020-03-26 14:23:18
您要联系的系统在httpd配置中列出了多个站点。
HTTP服务器能够区分托管在其上的各种站点的唯一方法是使用直接URL。
因为这些站点托管在CloudFlare的硬件上,所以它们可以提供任何希望出现的错误。CDN()基于以下几个因素将连接转移到最近的缓存副本。
如果您查看CloudFlare作为一个服务提供了什么,您将看到设置过程的这一部分,您将您的域名DNS记录重新定位到它们的dns服务器,然后这些服务器只使用它们的CDN系统。作为一个开发人员,如果您正在使用CDN,您仍然知道您的实际主机位于何处,并且可以直接与它们联系,客户不再具有这种访问权限。
这也有助于将主机与DDos攻击隔离开来。CDN仍然会联系您的主机获取内容,除非您的整个基础设施都托管在CDN网络中。
https://serverfault.com/questions/1008522
复制相似问题