是否必须使用 nginx 服务器才能与 tomcat 配合使用

是否必须使用 nginx 服务器才能与 tomcat 配合使用

在使用 apache tomcat 之前是否需要安装 nginx 服务器?我们只能使用 apache tomcat 吗?有什么优缺点吗?哪种选择更好,为什么?我使用 fedora 22 在 tomcat 8 上部署 Java 应用程序

答案1

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

Tomcat 是一个 servlet 容器。它使用 JSSE 实现 TLS,默认情况下它在网络上公开管理服务。它还存在大量安全漏洞(请参阅https://tomcat.apache.org/security-7.html例如)。它有点慢并且非常复杂。

我向客户推荐的安全做法是,除非他们使用客户端证书身份验证,否则在其前面运行其他 Web 服务器。其他 Web 服务器可以充当缓存代理和验证代理(几乎但不完全是 Web 应用程序防火墙),可以卸载 SSL,允许您使用 openssl 而不是 JSSE,有时甚至可以进行负载平衡。这些都是很好的功能。

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

使用什么代理其实并不重要;任何功能强大的 HTTP 守护程序都足够了。不过,我还建议使用 Web 应用程序防火墙来过滤请求。

答案2

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

  • 在具有最小权限的单独用户帐户上运行 Tomcat。
  • 当不以 root 身份运行时,Tomcat 将无法绑定特权端口,这是一个很好的安全功能,不是问题。这些天我通常使用xinetd移动端口。我使用了iptables以前,它更复杂,但也能正常工作。
  • 不要忘记定期更新 Tomcat 和 Java。
  • 使用防火墙封锁所有可能的端口,尤其是各种“远程管理”。只留下你真正需要和使用的端口。

别想

  • 以 root 身份运行 Tomcat。
  • 离开任何 Tomcat Web 管理界面。立即卸载。他们从未提供过任何我们无法通过命令行完成的功能,甚至更快。
  • 无需防火墙即可运行。

我不认为 Tomcat 的配置和维护很复杂,但这可能是因为我已经使用它很多年了。说到安全问题,每个服务器都会不时出现,发现的问题会定期修复。谷歌一下就行。

答案3

这是不必要在 Tomcat 之前添加 nginx。

相关内容