我正在编写一些返回JSON数据的Web服务,这些服务有很多用户.

与只使用Go http服务器相比,在我的服务器前使用Nginx有什么好处?

推荐答案

那得看情况.

开箱即用,将nginx作为反向代理放在前面将为您提供:

  • 访问日志(log)
  • 错误日志(log)
  • 容易的SSL终止
  • SPDY支持
  • gzip支持
  • 在几行中为某些路由设置HTTP标头的简单方法
  • 非常快速的静态assets资源 服务(如果您使用S3/etc,那么这与此无关)

Go HTTP服务器非常好,但是你需要重新发明轮子来做这些事情(这很好:它并不意味着对每个人都是万能的).

我总是发现把nginx放在前面更容易--这是它擅长的--让它来做"web服务器"的事情.我的Go应用程序完成应用程序的工作,并且只需要最少的标头等.不要认为把nginx放在前面是一件"坏"的事情.

Go相关问答推荐

Golang ==错误:OCI运行时创建失败:无法启动容器进程:exec:./" bin:stat./" bin:没有这样的文件或目录:未知

如何给杜松子wine 的路由加上一个名字,比如Laravel ?

正确使用pgtype的方法

如何获取集群外go Kubernetes客户端的当前命名空间?

如何在golang中使用viper获取对象的配置数组?

当我使用 CircleCI 构建 Go Image 时,我得到runtime/cgo: pthread_create failed: Operation not allowed

这是泛型的有效用例吗?

在 Golang 中查看目录是否可写的跨平台方式?

Golang prometheus:有没有办法衡量出站请求的指标?

将 struct 转换为 CSV 字符串

Go:如何在将 float64 转换为 float32 时判断精度损失

Golang:隐式 struct 匹配

如何在 Windows 中使用 github.com/AllenDang/giu 和 github.com/gordonklaus/portaudio 构建 GO 程序

Grafana/Prometheus 将多个 ip 可视化为查询

golang 如何从字符串中查找表情符号?

将 Simple Go Web 应用程序部署到 Elastic Beanstalk

Go:如何创建一个可以提供配置文件中描述的 url 的服务器

传递上下文的最佳方式

如何解决在mac m1中运行gcc失败退出状态1?

Beego - 我需要context.Context而不是 Beego 上下文