如何阻止CloudFront或其他CDN访问我的网站

有些人创build了一个CloudFront CDN代理我的网站,所以人们可以使用像df03039lsls933.cloudfront.net这样的url来访问我的网站,而不是www.example.com

如何使用nginx阻止这个?

从CloudFront文档,它说..

 Host: CloudFront sets the value to the domain name of the origin that is associated with the requested object. 

所以我不能通过使用host头阻塞,另一种方法是什么?

(CloudFront只是一个例子,我想用类似的方法阻止所有的CDN)

CloudFront请求来自logging的IP范围以及包含Amazon CloudFront的用户代理string。 您可以阻止,但AWS的IP范围相当频繁地扩展,我会去与用户代理块。

我希望CDN能够添加标题来标识它们。 这些通常会指示用户的真实IP地址以及一些其他信息。 他们还应该添加或附加一个X-Forwarded-For header,X-Forwarded-For header,还应该包含他们正在转发的IP地址。

您可以使用标题的存在触发redirect到您的域。 我不会使用这个redirect的X-Forwarded-For标题,因为这可能是由networking边界上的代理以及CDN添加的。 您可能需要逐个确定CDN的标题。

你也应该联系CDN是否有人在未经你允许的情况下configuration了你的域名。

我相信你可以使用JavaScript代码来检查location 。 这个检查将在访问者浏览器中完成(所以不在服务器端!)。 这种方法非常类似于防止在iframe中打开网页 。

如果检测到这种情况,则可以将用户redirect到有效的URL(或者不显示任何内容)。