我有点老,我看到的第一个Web编程语言是PHP,每个人都在Apache中使用它。那时,我还知道ASP,它与Microsoft IIS以及后来在IIS上运行的ASP.NET一起使用。
时间过去了,我去了ERP领域,当我回来(几个月前)时,我知道Golang和Node.js,令我惊讶的是它们拥有自己的Web服务器。
我可以在内置Web服务器中看到很多优点,但是每个应用程序都需要重写其Web服务器规则(最近,当我需要使用Express.js设置HTTPS服务器时遇到了这一问题。)
经过艰苦的工作以理解HTTP协议的所有细微差别,我问自己:是否以错误的方式进行操作?我在开发服务器中创建的所有允许规则是否都可以投入生产?也许这是无用的担心。但是也许我正在创建一个脆弱的服务器,可以被天真的黑客利用。
使用像Apache这样的服务器,很难滥用安全规则,因为存在明确的开发和生产环境设置。如果规则是硬编码的(例如在Node或Go中),那么一个不知情的开发人员可以在生产中使用开发规则,并且在事情发生之前没人会看到它。
有什么想法吗?
答案 0 :(得分:1)
出于多种原因,包括tls终止,您仍然可以在golang网关前使用nginx或apache。
但是,服务到服务的通信直接与服务通信可能会很好,并且golang http网络服务器速度很快。它还支持开箱即用的http2。 Go利用其“ goroutines”来减少操作系统的开销,以便一次处理许多请求。
答案 1 :(得分:1)
Web服务器专注于速度能力和计算能力。不管java或php网络有多好,或者有多少家老公司投入使用,只要一种新语言可以提供更快的速度和更好的功能(例如go),就会有更多的程序员来使用它。
顺便说一句,在go中运行Web服务器确实是一件容易的事。它构建起来更快并且运行得更慢。go中的例程帮助Web服务器更好地满足了数百万个客户请求,而哪种旧的Web语言几乎无法做吧。
答案 2 :(得分:0)
Node.js 和 Golang 没有它们的Web服务器,这些只是一些实现http协议并打开一些端口以提供服务的lib软件包。
像 Spring web 。
Nginx / IIS / Apache 是真正的服务器,Web服务器只是其中的一部分。
我认为 Spring 应该满足完整的应用程序场景,包括/ gateway / security / route / package / runtime manage /等。
但是当我们有一些不同的语言平台时,则需要nginx / apache / spring网关/ zuul /或其他路由。