我有一台 tomcat7 服务器托管我的应用程序。我已使用 iptables 设置端口转发,因此现在您可以像这样访问该应用程序:
http://ip-address-of-server/appname
我还设置了域路由,以便您也可以通过以下方式访问该应用程序:
http://appname.com/appname
现在我很困惑,因为我不知道如何映射http://appname.com
到http://appname.com/appname
。
我发现我需要第二个 Web 服务器(Apache)来转发(代理?重写?我不清楚正确的术语)对 tomcat 的请求,如下所示本文。
运行两个 Web 服务器似乎不太好,但我找不到其他方法来实现这一点。我想我的问题是:这样做对吗?为一个应用运行两个 Web 服务器?有没有更好的方法?
谢谢你的时间!
答案1
根据我的经验,你应该运行“第二个 Web 服务器”,即 NGINX 或 Apache 的 HTTPD,并将其用作 Tomcat 的代理。有很多资源可以帮助你以这种方式进行配置,也有很多论据可以说明为什么您希望使用 http 代理来“前置”您的 tomcat servlet。这主要归结为:
- 专用 HTTP 服务器(NGINX、Apache 的 HTTPD)旨在高效地为大量客户端提供服务
- Tomcat 旨在运行 Java Servlet(应用程序)
- 专用的 HTTPD 服务器可以比 Tomcat 更轻松地终止 SSL。
通过在应用程序中同时使用这两种方法,您可以获得较高的效率。
然而,这类事情很大程度上取决于您的 Web 应用程序的特性。
- 您计划服务多少客户?
- 是否出现交通拥堵?
- 它是公司内部使用的东西还是互联网上任何人使用的东西?
另请参阅:
http://javadeveloper.asia/configuring-nginx-in-front-of-tomcat-or-other-java-application-server/
http://blog.rezajp.info/posts/configuring-nginx-for-apache-tomcat-7/
我总是对我的应用程序使用此配置,特别是当您想在 HTTPD 代理后面运行多个 tomcat 实例(以及多个 JVM 实例)时。