amazon-web-services - 如果 Web 服务器在 3 层应用程序中被删除,架构建议
问题描述
我们以以下方式在 AWS 中部署了一个 java j2ee Web 应用程序。请求到达外部负载均衡器,后者终止 SSL 并转发到 Web 服务器,Web 服务器转发到内部负载均衡器,内部负载均衡器将请求转发到连接到数据库 (rds) 的 tomcat 应用服务器。这里有几个问题:
apache web 服务器的目的只是反向代理。它没有静态内容。包括 jss、css 在内的所有内容均由 tomcat 提供。apache 确实有用于缩小的页面速度模块 如果静态内容是从云端提供的,为什么还要有 apache 网络服务器?这将改善网络跃点和延迟。
如果内容实际上是从云端提供的,我们如何获得页面速度的功能以避免缓存等问题?
如果我们删除 apache,我们打开了应用程序的前门,但安全性真的受到威胁吗?
欣赏专家的想法和建议。
解决方案
您不需要 apache HTTP Web 服务器和内部负载平衡器。通常,Web 服务器放置在应用服务器之前,其目的是为了能够有效地处理网络连接、减轻慢速读取攻击、缓存静态内容等,因为 Tomcat 服务器 HTTP 连接器在一段时间内针对上述情况进行了优化,您不需要HTTP 服务器。您的外部负载平衡器将执行负载平衡,因此也不需要内部负载平衡器。
考虑仅通过 CDN 提供静态内容,如 css、js 文件。
您的应用程序不直接暴露在互联网上,请求来自 ELB。除了公共 ELB 之外,应用程序和 RDS 都应该在私有子网中启动(实例将具有私有 ip)。确保正确配置安全组以避免安全漏洞。
推荐阅读
- html - 表格:添加边框时,单元格展开
- c++ - 以下代码中的分段错误
- ruby-on-rails - 我的应用在 Heroku 上关闭,运行“heroku run rails test”时没有错误,但运行“heroku run rails console”时出现很多错误
- google-sheets - 如何将 Arrayformula 与命名范围一起使用?
- css - Sublime Text Markmon 包,用 github markdown 风格渲染?
- firebase - 如何通过 Google Analytics 管理控制台为 ionic 创建移动应用属性
- c# - 如何在 C# 中的应用程序中运行 Windows IoT 应用程序
- node.js - 在 AWS 上托管 SQLITE 数据库文件
- itunes - 是否可以使用 iTunes API 播放歌曲
- batch-rename - 使用从 EXIF 中提取的日期进行重命名的脚本