首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赫罗库,GeoIP,亚马逊53号路线

赫罗库,GeoIP,亚马逊53号路线
EN

Stack Overflow用户
提问于 2015-08-24 18:43:11
回答 2查看 258关注 0票数 1

我开始为我的Heroku应用程序设置2-Region,然后使用Amazon Route 53 GeoDNS服务创建和分发工作负载。

解决方案1失败

代码语言:javascript
复制
a = api.mydomain.com, Europe, myApp-EU.herokuapp.com
b = api.mydomain.com, US, myApp-US.herokuapp.com

a,b失败:因为Heroku不知道"api.mydomain.com“。

解决方案2失败

代码语言:javascript
复制
a = api.mydomain.com, Europe, CNAME api-eu.mydomain.com
b =  api.mydomain.com, US, CNAME api-us.mydomain.com
c =  api-eu.mydomain.com, Europe, myApp-EU.herokuapp.com
d =  api-us.mydomain.com, US, myApp-US.herokuapp.com

c,d工作,因为heroku知道"api-eu.mydomain.com“。a,b不起作用,因为heroku不知道"api.mydomain.com“

在这一点上,我会得出结论,这与Herou是不可能的?

EN

回答 2

Stack Overflow用户

发布于 2015-08-26 06:51:27

在http/s环境中,两个因素必须结合在一起。(从问题中可以明显看出,您理解这两个问题,但请允许我在此澄清)。

  • 请求主机名必须可直接解析为端点IP地址(使用DNS记录,或通过CNAME记录间接解析),并且
  • 目标必须预期在Host: http标头中具有原始主机名的请求。

Heroku显然理解应用程序应该支持自定义主机名的概念,例如eu-app.example.comapi.example.com

如果他们的系统允许你为两个应用程序分配相同的主机/域名,问题就会自行解决,因为你只需将地理DNS映射配置到适当的区域CNAME目标,它就会像预期的那样工作。既然你问了这个问题,我想事实并非如此。

根据在Heroku上托管对您的有用程度,考虑到这个明显的问题,一个简单且相对低成本的解决方案是每个目的地区域中的一个EC2实例,其唯一目的是接收这些地理路由的请求,将Host:头重写为Heroku期望看到的内容,并反向代理请求。

我有一个类似的应用程序,其中我有一个只有一个主机名的静态站点,存储在一个不同名称的S3存储桶中。对于静态网站托管,S3要求存储桶名称等于浏览器在Host:头中发送的值,这会阻止来自不同主机名的CNAME工作,原因与您在这里看到的完全相同。

代理服务器在t2.micro实例上运行HAProxy,<$10/月,每天服务数千次点击,几乎不使用t2.micro上的任何CPU (我的信用余额总是超过100),因为HAProxy编写得非常好,并且依赖于资源使用。由于EC2机器与S3存储桶在同一地域,因此添加到每个请求的额外延迟微不足道。当然,作为额外的好处,我可以获得实时日志记录、标头捕获以及后端服务的性能和行为的外部透视图。Nginx或Varnish或其他几个代理服务器可能也可以用于相同的目的。您可以将它们放在部署应用程序的相同区域中,但是对于一个区域,如果Heroku平台直接期待您的api.example.com,则可以跳过该区域。从技术上讲,您只需要在一个位置使用它。

这样做的原因是,HAProxy并不关心传入的Host:报头包含什么,除非您将其配置为基于该报头做出路由决策。

您还可以在所有HAProxy实例上加载SSL证书,它将终止SSL并使用新的api.example.com连接将请求转发到端点,该端点可以使用任何有效的SSL证书,包括目标端点可能支持的任何通配符/非虚证书。

票数 0
EN

Stack Overflow用户

发布于 2015-08-29 16:00:58

在看了一些不同的解决方案后,我想出了如何处理它。AKAMAI和Fastly是两个CDN服务,允许您覆盖'http host header‘。通过这种方式,Heroku知道请求来自"api-eu.mydomain.com“,因为Akamai能够覆盖"api.mydomain.com”主机标头。

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

https://stackoverflow.com/questions/32180326

复制
相关文章

相似问题

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