使用 golang 还有必要使用 nginx 么?

如果一台服务只部署一个用 golang,开发的 web 服务,还是否有必要使用 nginx

阅读 35.7k
9 个回答

当然需要。
其他都不说,
1、静态资源 css,js,img 的就需要 nginx
2、nginx 有很多成熟的插件,比如过滤 IP,比如重定向,比如。比如不出来了。反正很多
当然,你不想使用,就是开个 go 的 web 服务,也是可以的。


我说有需要使用,就要被踩么。
那我是不是要回答,想用就用,不想用就别用,比较好一点 ?
各抒己见罢了。

主要看你开发的 golang web 服务是否需要用到 Nginx 的功能点。

比如用 Nginx 绑定域名,转发请求、用 Nginx upstream 做应用层的负载均衡、做 url hash 转请求等等。

假如你的 web 服务是内部服务,很多时候可以不用 Nginx。

看场景, 比如我用golang开发了一个web服务A, 不支持https
这时候可以通过nginx配置https,反向代理访问A, 不用修改代码。

当你发现没必要用的时候,就别用呗。

等真的需要什么nginx功能的时候,再切换也很简单呀。

要是需要的功能caddy有,用caddy也行。

另外本人测试过golang作为web服务器解析https的性能不如nginx方向代理到后端的golang http 按照互联网的的趋势https将慢慢取代http了

caddy的速度我也测试过没有nginx的性能强

有必要,因为Nginx是专业的完备的HTTP/HTTPS服务器,像很多服务如PHP-FPM,Java Tomcat,Node普遍都躲在Nginx后面跑,这样做的好处就是后端语言只处理自己的请求,不需要处理各种静态资源(img/css/js/file)的请求,比如用户下载一个大文件,如果是后端语言自己处理,那肯定会拖累应用性能,但如果委托给Nginx(X-Accel-Redirect: file_path),Nginx就会用自己的AIO线程池来实现大文件下载支持,就不需要后端语言费力去折腾.

功能定位不同罢了。如你所说go只是一个服务器,而nginx的功能有反代、负载均衡、静态资源处理等 是为你的go服务器更好的服务的。

再造一个nginx,有这个水平,有这个必要吗。不如加入nginx issue组。

推荐问题
宣传栏