我一直在努力研究 Glassfish,而不断出现的一件事是使用 Apache 面对 Glassfish 的“操作方法”。不幸的是,我还没有找到你为什么要这样做的描述!
根据我的实验,Glassfish 似乎是一个功能齐全的 Web 服务器类型的服务;但我可能会错过很多。那么,前端 Glassfish 的概念是更多地将其与现有架构集成的解决方案,还是前端(在纯 Java 环境中)提供额外的好处?
还有另一个有效的用例说明我们为什么将 Glassfish 与 Apache 放在一起。在这种情况下,Apache 将充当反向代理,以提高 Glassfish 的安全性。RP 配置为仅允许将某些 URL 传递到应用程序服务器。例如,您可能在 Glassfish 中部署了应用程序上下文 /myApp 和 /myPrivApp。在 RP 服务器中,您只需将 /myApp 配置为传递给 Glassfish。任何请求 /myPrivApp 的人都会看到 404 '因为请求在 RP 级别停止。
在我的一个部署中,我部署了一堆 WAR,一些用于来自 Internet 的用户,一些仅用于 Intranet。我有 2 个 RP 正在运行,一个用于 Internet 用户,另一个用于 Intranet。我将 Internet RP 配置为仅允许已批准的 Internet 应用程序的 URL 通过,而 Intranet 用户可以查看所有内容。
希望有帮助。
它通常用于加快速度。由于 apache 是一个非常快速的 Web 服务器,它用于传递静态内容。比如图片、CSS文件等等。Glassfish 在此场景中提供动态内容(servlet、JSP)。
使用 Apache 作为 Glassfish 前端的另一个原因是可以在 Glassfish 集群中提供负载平衡。有关详细信息,请参阅http://tiainen.sertik.net/2011/03/load-balancing-with-glassfish-31-and.html。
另一个原因是 glassfish 不能(轻松地)在端口 80 上运行,当然没有授予它 root 权限。因此,对于大多数用户来说,在 apache 前面运行某种代理(apache、nginx、varnish)并让两台服务器都在普通用户下运行会更容易。
然后,您可以从前端的一些配置选项中获得另一个优势。像其他人提到的那样,例如缓存。