amazon-web-services - 使用负载均衡器代替代理服务器

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

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

Tomcat 服务器提供我的 Java 网络应用内容,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 解决方案。

谢谢。

最佳答案

虽然 Application Load Balancer 是对 AWS 产品套件的重要补充,但有些事情(目前)您可以使用反向代理来完成,而使用 ALB 则无法完成 - 您的选择将取决于您的情况需要.

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

代理可以做而 ALB 做不到的事情

  • 内置后端响应缓存,符合 HTTP 标准缓存控制 header 和/或自定义缓存规则
    • ALB 路由请求而不缓存
    • (如果您需要缓存,AWS 原生解决方案是 Cloudfront )
  • 复杂的后端路由决策
    • 例如使用 nginx,您可以根据请求的几乎任何方面选择后端 - 使用 ALB(到目前为止)它仅基于路径(启动时最多有 10 条规则) - 尽管他们 promise 会有更多
  • 任意后端
    • 代理通常允许您代理到任何 http/s 后端(例如 S3 存储桶、其他网站等)
    • 此时 ALB 似乎只提供包含 EC2 实例或 EC2 容器的目标组
  • 许多代理(例如 nginx)提供一系列 modules其中任何一项可能对您有帮助/有用
  • 自定义扩展性 - nginx lua module为代理的行为提供了巨大的灵 active

使用 ALB 比代理更容易的事情

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

其他引用资料

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

关于amazon-web-services - 使用负载均衡器代替代理服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319518/

相关文章:

php - 如何通过代理使用 CURL?

windows - 通过批处理/CMD 刷新 Internet 选项

security - 查找 AWS 访问 key 的所有者

php - EC2 上的 Laravel 存储/框架/ session 无法打开流

amazon-web-services - PMU x86-64 性能计数器未显示在 AWS 下的性能中

tomcat - 为什么我的调试没有更新类和资源选项?

java - tomcat中的io处理

java - Tomcat 应用程序显示 "Unable to configure the logging system. No log.properties was found."

apache - 代理是否必须先完全加载所有内容才能将它们发回?

amazon-web-services - 如何使 Cloudformation 提供更详细的调试输出?