我正在编写一些返回JSON数据的Web服务,这些用户有很多用户。
与仅使用go http服务器相比,在服务器前端使用Nginx有什么好处?
我正在编写一些返回JSON数据的Web服务,这些用户有很多用户。
与仅使用go http服务器相比,在服务器前端使用Nginx有什么好处?
Answers:
这取决于。
开箱即用,将nginx放在前面作为反向代理将为您提供:
转到HTTP服务器是非常好的,但你将需要推倒重来做一些事情(这是罚款:它并不意味着所有人的所有需要)。
我总是发现将nginx放在前面是一件容易的事,这是它的优势所在,然后让它做“ Web服务器”工作。我的Go应用程序执行应用程序的工作,并且仅执行最少的headers / etc。它需要的。不要将nginx放在前面是“坏”的事情。
log
程序包)。如果要记录IP地址,资源访问等信息,则需要编写该信息。除了基础知识之外,设置标题也是如此。尽管我没有任何具体数据,但是Go前面的nginx确实不应该慢于Go:实际上,由于gzip及其自身的优化,它可能会更快。“成本”将是更多的内存/ CPU使用率,但是nginx在这方面也非常有效。
Go的标准http服务器很好。如果您的应用程序大部分/仅是“动态”请求/响应,那么这实际上是最好的方法。
您可以使用nginx来提供静态资产,但是最有可能的是,标准Go one也可以。如果您需要更高的性能,则应使用CDN或尽可能多地使用Varnish(例如)来缓存。
如果您需要使用相同的IP地址为不同的应用程序提供服务,那么nginx是代理在不同应用程序之间分发请求的理想选择。尽管我更经常将Varnish或HAProxy从此类工具箱中删除。
从https://blog.gopheracademy.com/caddy-a-look-inside/看来,Go可以使用中间件处理gzip,错误,静态文件,路由和http标头。博客中的以下行显示了如何处理此类请求。
logHandler(gzipHandler(fileServer))
他们以一种非常有趣的方式处理错误日志。只要您的中间件返回错误代码(int),错误处理中间件就会自动对其进行处理。他们甚至可以像Nginx一样在Go中配置整个站点。“所有Gopher学院网站的nginx.conf文件都超过115行。等效的Caddyfile只有50行。”