首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDN -使用CloudFront IP地址访问网站

CDN -使用CloudFront IP地址访问网站
EN

Stack Overflow用户
提问于 2018-03-23 20:55:18
回答 2查看 3.6K关注 0票数 0

我在我的网站前面配置了CDN。当您通过我的自定义DNS或CDN DNS访问网站时,一切工作正常。我的问题是当我想使用IP而不是DNS时。

当我在我的CDN DNS名称上进行nslookup时,我得到了一个IP列表。如果我从那里抓取一个IP地址并尝试访问网站,我会得到一个403禁止请求。

为什么CDN只接受DNS请求而不接受IP请求?

如果我的CDN前面有一个代理,尝试使用代理IP访问我的网站,如何使用指向CDN的代理IP访问网站?

这是一个有线的要求和耗时,我一直在寻找正确的答案。似乎没有人给出解决方案。

干杯!

EN

回答 2

Stack Overflow用户

发布于 2018-03-23 22:52:22

为什么只接受

请求而不接受IP请求?

CloudFront不是以这种方式设计的。它是一个庞大的、全球分布的系统。当您查找CloudFront分发版的IP地址时,您将收到CloudFront预期接收流量的地址列表:

  • 用于您的网站,
  • 用于可能有数百或数千个其他站点,
  • 来自与您的

位于相同地理区域的浏览器

您需要一种方法来确定您希望CloudFront在处理您的请求时使用哪个发行版。

在超文本传输协议模式下,它使用由浏览器发送的Host:超文本传输协议报头。在HTTPS模式下,它使用TLS SNI值和Host:报头。

如果您使用代理来访问CloudFront,则需要代理为HTTPS注入一个HTTP头,并为Host正确设置SNI值。

例如,在HAProxy中,设置主机标头,覆盖任何已经存在的此类标头。

代码语言:javascript
复制
http-request set-header Host dzczcexample.cloudfront.net

当然,您也可以使用为您的发行版配置的任何一个备用域名值。

对于SNI:

代码语言:javascript
复制
backend my-cloudfront-backend
    server my-cloudfront dzczcexample.cloudfront.net:443 ssl verify none sni str(dzczcexample.cloudfront.net)

(来源:https://serverfault.com/a/830327/153161)

但这只是最小的基线工作配置,因为CloudFront具有这种简单设置忽略的功能。

如上所述,CloudFront将返回一个IP地址列表,该列表应用于访问(1)您的站点,(2)从您所在的位置,(3)立即访问。地址列表可以而且会有所不同。CloudFront似乎能够动态管理和分配其工作负载,并通过将流量从一组服务器移动到另一组服务器,从一个边缘位置移动到另一个边缘位置,通过修改DDoS响应...因此,您的代理需要使用返回的多个地址,并且需要刷新其DNS值,以便始终连接到CloudFront希望其连接的位置,以获得最佳行为和性能。

此外,不要忽视这样一个事实,代理服务器将通过代理附近的边缘连接到CloudFront,而不是浏览器附近,因此这不是您在生产中经常使用的东西,尽管它确实有一些有效的用例。(我在CloudFront的两端使用HAProxy已经有几年了,用于某些应用程序--其中一些现在已经被Lambda@Edge取代了,但我离题了)。

这是有线的怪异吗?要求

不怎么有意思。多年来,基于名称的虚拟主机一直是标准实践。在我看来,当您设置web服务器时,它通常也会响应Host报头中的IP地址,这几乎是历史上的一个意外。配置良好的web服务器不会这样做--如果您( web浏览器)不知道您请求的是哪台主机,并且只是向我的IP发送请求,那么我( web服务器)应该告诉您,我不知道您想从我这里得到什么,因为您更有可能是出于恶意原因、或良性但恼人的原因(扫描)或由于错误配置而到达的。你也不希望搜索引擎蜘蛛在IP地址上找到你的内容。不利于上市,不利于搜索引擎优化。

票数 2
EN

Stack Overflow用户

发布于 2018-03-24 00:47:59

这个代理的问题是我不能配置报头。我正在考虑添加另一个代理,在那里我有控制权,然后用我想要的值修改标头。但这并不是一个好的解决方案,就像从一个代理跳到另一个代理一样。

我认为我应该更多地依赖DNS和主机名,而不是IP,这对我来说很好,我更喜欢使用正确的DNS名称。

谢谢你的透彻解释,你澄清了很多事情。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49450168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档