![AWS 反向代理从单个域提供内部和外部服务](https://linux22.com/image/748902/AWS%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E4%BB%8E%E5%8D%95%E4%B8%AA%E5%9F%9F%E6%8F%90%E4%BE%9B%E5%86%85%E9%83%A8%E5%92%8C%E5%A4%96%E9%83%A8%E6%9C%8D%E5%8A%A1.png)
我有一个在 EC2 实例中运行的 Web 应用程序,由 example.com 提供服务。我们的主页、公司信息等目前是该应用程序的一部分,但我们希望将这些东西移至单独管理的服务 — 特别是由第三方托管的 WordPress 网站。我正在寻找一个 AWS 管理的解决方案来反向代理内部应用程序和 example.com 上的外部网站,并根据 URL 路径将请求定向到其中一个。
我会使用 ELB 应用程序负载均衡器,但据我所知,它不能使用外部域或 IP 作为目标(不设置直接连接,但这与此无关)。看起来 CloudFront 可以通过为内部应用程序和 WordPress 网站设置单独的来源来完成这项工作,但这似乎并不是适合这项工作的工具。
有简单的答案吗?
答案1
有人曾经说过...
CloudFront 不仅仅是一个 CDN。它还是一个 SSL 卸载器、主机:标头重写器、路径前置器、地理定位器、地理限制器、安全内容网关、http 到 https 重定向器、错误页面定制器、根页面替换器、Web 应用程序防火墙、源标头注入器、动态内容 gzipper、基于路径的多源 http 请求路由器、查看器平台标识符、DDoS 缓解器、区域顶点别名目标……所以不要太纠结于“CDN”……
实际上,那是我,所以可能不算数,但我认为,尽管 CloudFront 被宣传为 CDN,但它实际上是一个近乎无限规模的全球分布式反向代理,还具有缓存,您可以自行决定使用或不使用缓存。我认为这正是所述用例的解决方案。只要源可以从互联网访问,它们就不必位于 AWS 中。即使没有缓存,具有 EC2 托管站点的 CloudFront 也具有一些全球网络性能优势,因为流量会到达查看器附近的边缘位置,然后在 AWS 托管网络上返回 EC2,而不是通过公共互联网从查看器到 EC2。
当然,您可以在应用程序负载均衡器后面添加 HAProxy 或 Nginx 作为反向代理,然后使用均衡器的基于路径的目标规则将流量转移到反向代理,然后将其从 EC2 发送出去并发送到第三方 Wordpress 网站,但这似乎是倒退了一步。