使用AWS CloudFront时,如何向公众隐藏自定义原始服务器



我不确定这是否完全符合stackoverflow的资格,但是由于我需要按程序进行此操作,而且我想知道很多人,所以使用Cloudfront,我认为它确实如此...这里是:

我想隐藏对我自定义原始服务器的公共访问。

CloudFront从自定义来源中拉出,但是我找不到有关在云方面代理在云方面的直接请求到我来源的文档或任何类型的示例,除非我的原点是S3 ...起源。

我可以使用哪种技术来识别/验证请求是通过CloudFront代理的,而不是由客户端直接请求?

CloudFront文档仅在与S3 Origin一起使用时涵盖这种情况。列出CloudFront的IP地址的AWS论坛帖子具有免责声明,即不能保证列表是最新的,不应依靠。请参阅https://forums.aws.amazon.com/ann.jspa?annid=910

我假设任何使用CloudFront的人都有某种方式将其自定义来源从直接请求/爬网隐藏。我很高兴能使我入门。谢谢。

我建议使用与Facebook的robots.txt类似的东西,以防止所有爬行者访问您网站中的所有敏感内容。

https://www.facebook.com/robots.txt(您可能必须对其进行一些调整)

之后,只需指向您的应用程序。

现在,将网站上的所有URL重写为:

,如:

https://d2d3cu3tt4cei5.cloudfront.net/hello.html

基本上所有的URL都应指向您的云沿线分布。现在,如果有人从https://d2d3cu3t4cei5.cloudfront.net/hello.html请求文件,并且它没有Hello.html ..它可以从您的服务器中获取(像HTTPS这样的加密通道),然后将其服务于用户。

因此,即使用户执行视图源,他们也不知道您的原始服务器...只知道您的CloudFront Distribution。

有关在此处设置此设置的更多详细信息:

http://blog.codeship.io/2012/05/18/assets-sprites-cdn.html

创建只有云方的自定义cname。在您自己的服务器上,阻止任何不来自该cname的静态资产请求。

例如,如果您的网站是http://abc.mydomain.net,则为http://xyz.mydomain.net设置一个cname,它指向完全相同的位置,并将该新域放在云端中为原点拉服务器。然后,应要求,您可以分辨出它是否来自Cloudfront,并执行您想做的任何事情。

缺点是通过默默无闻是安全性。客户从未见过http://xyzy.mydomain.net的请求,但这并不意味着他们将不会有某种方法来弄清楚。

[我知道这个线程是旧的,但是我正在为像我这样看到它的人回答。]

从我阅读和看到的内容中,CloudFront并未在请求中始终如一地标识自己。但是您可以通过覆盖robots.txt在CloudFront Distribution中解决此问题。

1)创建一个仅包含一个文件的新S3存储桶:robots.txt。那将是您的CloudFront域的robots.txt。

2)转到AWS控制台中的分发设置,然后单击"创建origin"。添加水桶。

3)转到行为,然后单击创建行为:路径模式:robots.txt来源:(您的新水桶)

4)将机器人设置为较高优先级(较低的数字)。

5)转到无效/无效/robots.txt。

现在,ABC123.Cloudfront.net/robots.txt将从桶中提供,其他所有内容都将从您的域中提供。您可以选择独立地允许/禁止在任一级上爬行。

另一个域/子域也将代替一个水桶,但是为什么要解决问题。

相关内容

  • 没有找到相关文章

最新更新