使用负载均衡器而不是代理服务器

时间:2016-09-04 17:16:16

标签: amazon-web-services tomcat proxy reverse-proxy

我计划在同一个域上运行Java Web应用程序(www.example.com)和wordpress博客(www.example.com/blog)。

Tomcat服务器提供我的Java Web应用程序内容,Apache服务器提供WordPress内容。

最初,我打算使用代理服务器将所有博客请求路由到Apache服务器,并将所有其他请求路由到Tomcat(http://tomcat.apache.org/tomcat-8.0-doc/proxy-howto.html)(我不确定我将如何实施,因为我没有'做完了。)

但是,我最近了解了AWS Application Load Balancer。 使用LB我可以根据url路径将请求路由到特定端口,因此我可以使用它将所有www.example.com/blog请求路由到Apache服务器(在端口80上)和所有www.example.com请求Tomcat服务器(端口8080)。

我有什么理由不这样做吗?由于Application Load Balancer是一个相对较新的产品,因此大多数文档都推荐使用代理服务器解决方案,但我认为没有理由不使用Application Load Balancer解决方案。

谢谢。

1 个答案:

答案 0 :(得分:5)

虽然应用程序负载均衡器是AWS产品套件的一个很好的补充,但是您可以使用反向代理进行一些事情(目前),您可以使用ALB - 您的选择将取决于您的情况需要。

一般来说,ALB适用于更简单的配置,但如果您有更复杂的规则/需求,代理可以为您提供更多控制和灵活性。

使用代理可以使用ALB进行的事情

  • 内置缓存响应HTTP标准缓存控制标头和/或自定义缓存规则的后端响应
    • ALB路由请求而不缓存
    • (如果您需要缓存的AWS本机解决方案是Cloudfront
  • 复杂的后端路由决策
    • e.g。使用nginx你可以根据请求的几乎任何方面选择后端 - 使用ALB(到目前为止)它只基于路径(启动时最多10个规则) - 尽管他们承诺会有更多来自< / LI>
  • 任意后端
    • 代理通常允许您代理任何http / s后端(例如S3存储桶,其他一些网站等)。
    • 此时ALB似乎只提供包含EC2实例或EC2容器的目标组
  • 许多代理(例如nginx)提供modules范围,其中任何一个代理可能对您有用/有用
  • 自定义扩展性 - nginx lua module为代理行为提供了极大的灵活性

ALB通过代理服务器更轻松的事情

  • 更简单的配置
  • 开箱即用的高可用性
    • 如果您运行代理,则需要将代理放入其自己的扩展组并运行两层传统ELB - 一个位于代理的ASG前面,并且一个在每个后端的ASG前面(例如在该页面上搜索Service Segmentation Using a Proxy Layer
  • 基于API的配置和配置 - 如果您想动态启动新环境,则可以更好地使用devops工作流和CI / CD管道

其他参考资料

Nginx发布了a comparison here - 上面的列表基于我对重点的看法--Nginx显然有自己的偏见,但值得回顾。

相关问题