是否有必要使用nginx服务器来使用tomcat

在使用apache tomcat之前是否需要安装nginx服务器? 我们可以使用只有Apache Tomcat有什么优点缺点哪个select更好,为什么。 我正在使用的Fedora 22部署我的应用程序在Java应用程序的Tomcat 8上

如果你喜欢,你可以只使用tomcat。 但是,要小心!

Tomcat是一个servlet容器。 它使用JSSE来实现TLS,默认情况下它暴露在networking上的pipe理服务。 它也有大量的安全漏洞(例如见https://tomcat.apache.org/security-7.html )。 它有点慢,而且非常复杂。

我推荐给我的客户的安全实践是在它之前运行一些其他的Web服务器,除非他们正在使用客户端证书authentication。 其他Web服务器可以充当caching代理和validation代理(几乎不是Web应用程序防火墙),可以卸载SSL,允许使用openssl而不是JSSE,有时甚至可以进行负载平衡。 这些都是很好的function。

Tomcat的架构也带来了问题。 例如,它只能使用特权端口,通过以root身份运行(非常糟糕),或者使用authbind机制(在tomcat 8之前不支持IPv6)。 它需要连续访问其TLS密钥和包含用于encryption密码的configuration文件,这对每个主要的Web服务器都是轻微的安全风险。

你用什么作为代理并不重要, 任何有能力的HTTP守护进程都应该足够了。 不过,我也推荐一个Web应用程序防火墙来过滤请求。

可以单独使用Tomcat,但是您需要避免一些明显的错误。 最重要的

  • 以最小的权限在单独的用户帐户上运行您的Tomcat。
  • 当不以超级用户身份运行时,Tomcat将无法绑定具有良好安全function的特权端口,而不是问题。 有很多解决scheme,例如在这里看到。
  • 不要忘记定期更新Tomcat和Java。
  • 用防火墙阻塞所有可能的端口,尤其是各种“远程pipe理”。 只留下你真正需要和使用的东西。
  • 至less试着为你的Tomcat获得SELinux保护。 它可能需要工作来configuration,但是是值得的。

别想了

  • 以root身份运行Tomcat。
  • 留下任何Tomcat Webpipe理界面。 立即卸载。 他们从来没有提供任何我们无法从命令行上做得更快的事情。
  • 没有防火墙运行。

我没有看到Tomcat像configuration和维护一样复杂,但这可能是因为我使用了很多年。 谈到安全问题,每个服务器都有时间安排,发现的问题是定期修复的。 只是谷歌。