以 root 身份直接在端口 80(或 443)上运行 tomcat(来自 spring 源的 tcServer)是一个好主意吗
可以使用 apache2 中的 mod_proxy 或 mod_jk 来解决此问题。我还看到了基于 iptables 的解决方案(即 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080)
在生产使用时有哪些优点/缺点需要了解?
答案1
您绝对不想以 root 身份运行您的 Web 应用程序!永远不要!!
使其尽可能安全 - 它将被黑客入侵,这只是时间问题(和受欢迎程度:))
以另一个用户('tomcat'或类似的)的身份运行 tomcat,该用户只能读取/写入(如果需要)它自己的目录。
至于端口重定向,我建议使用 iptables,就像您展示的那样。
或者你可以做 apache 重定向如这里所述。
如果您拥有一个较大的站点并使用硬件负载均衡器,您可能会将 VIP 上的端口 80 映射到 Web 服务器上的端口 8080,在这种情况下您不必在服务器端执行任何操作,而且说实话,这是最好的方法。
答案2
正如 pulegium 所说,永远不要运行你的网络服务器(如果你以 root 身份使用 HTTP 连接器,那么 Tomcat 就是如此!相反,请停用 Tomcat 的 HTTp(请参阅 server.xml)并使用带有 apache2 mod_proxy_ajp 的 AJP/1.3 连接器(或也提供 AJP 代理的 lighttpd)。这将是生产环境的推荐设置。此外,它还为你提供了 mod_proxy_balancer 和所有其他 apache 内容(或 lighttpd)的好处。