use*_*862 5 authentication reverse-proxy cdn proxy-authentication amazon-cloudfront
我不确定这是否完全符合 StackOverflow 的要求,但由于我需要以编程方式执行此操作,并且我认为 SO 上的很多人都在使用 CloudFront,我认为确实如此……所以这里是:
我想隐藏对我的自定义源服务器的公共访问。
CloudFront 从自定义源中提取,但是我找不到有关在 CloudFront 后面代理时防止用户直接请求到我的源的文档或任何类型的示例,除非我的源是 S3 ...自定义源不是这种情况。
我可以使用什么技术来识别/验证请求是通过 CloudFront 代理的,而不是由客户端直接请求的?
CloudFront 文档仅涵盖与 S3 源一起使用时的这种情况。列出 CloudFront 的 IP 地址的 AWS 论坛帖子有一项免责声明,即不保证该列表是最新的,不应依赖该列表。请参阅https://forums.aws.amazon.com/ann.jspa?annID=910
我假设任何使用 CloudFront 的人都可以通过某种方式向直接请求/爬虫程序隐藏他们的自定义来源。我很感激任何让我开始的提示。谢谢。
我建议使用类似于 facebook 的 robots.txt 的内容,以防止所有爬虫访问您网站中的所有敏感内容。
https://www.facebook.com/robots.txt(您可能需要稍微调整一下)
之后,只需将您的应用程序(例如 Rails)指向自定义源服务器。
现在重写您网站上的所有网址,使其成为绝对网址,例如:
https://d2d3cu3tt4cei5.cloudfront.net/hello.html
基本上所有 URL 都应该指向您的 Cloudfront 发行版。现在,如果有人从https://d2d3cu3tt4cei5.cloudfront.net/hello.html请求一个文件,但它没有 hello.html.. 它可以从您的服务器获取该文件(通过 https 之类的加密通道),然后将其提供给用户。
因此,即使用户查看源代码,他们也不知道您的源服务器......只知道您的云前端分布。
有关设置的更多详细信息,请参见此处:
http://blog.codeship.io/2012/05/18/Assets-Sprites-CDN.html