使用Go的HTTP服务器进行生产

时间:2015-06-14 17:07:30

标签: go

我是Golang的新开发人员。 PHP附带内置服务器,不建议用于生产。我在Go中阅读了关于Web开发的beautiful book by astaxie以及golang.org example on writing a web app。他们都使用http.ListenAndServe()来创建Web服务器。我只是想知道这个服务器是否可以在生产中使用,还是只是像PHP内置服务器那样的虚拟服务器?通过生产我的意思是,它能处理像Apache或ngnix服务器这样的巨大流量吗?

2 个答案:

答案 0 :(得分:7)

简答:是的。

更长的答案:您当然可以使用内置的Web服务器进行生产流量。你今天很有可能使用它,因为谷歌使用它来提供一些流量。我知道很多公司,包括我工作的公司,用于生产流量。 BTW我不知道Go中广泛使用的Web服务器使用标准Web服务器。

请记住,您需要调整客户端超时等内容以使其非常强大,并可能限制传入连接等。

答案 1 :(得分:4)

添加到@Not_a_Golfer的答案:Go的网络服务器非常稳固,并且到目前为止已经过很好的测试。

然而,有理由将其置于反向代理(如nginx,Apache或HAProxy)之后,包括:

  • SSL终止(nginx有许多额外的TLS功能,你必须自己部分实现,比如简单的OCSP装订支持)
  • 代理缓存(从缓存提供静态响应,如果Go应用程序崩溃,则为500)
  • Performant logging
  • SPDY支持(虽然Go& nginx可能会同时获得HTTP / 2)
  • 内置gzip支持和选项
  • 静态文件的文件描述符缓存

如果我有选项,我通常更喜欢将nginx放在前面,因为虽然你可以在Go中实现所有这些功能,但仍有一些轮子重新发明。你可以使用像gorilla/handlers和Go自己的crypto / tls lib这样的中间件来获得大部分内容,如果你不是操作人员和/或想要保持真正的瘦身,那么直接从Go运行一切就是仍然可以用于生产。