发布于 2016-04-27 01:54:29
除非您使用nginx进行缓存,否则这一点根本不需要,Golang 1.6+非常适合直接服务器http和https。
然而,如果你坚持,我会偷偷地批评你,嘲笑你,这就是工作流程:
Node.js + Nginx -现在是什么?中的nginx设置与Go所用的设置完全相同,或者任何其他独立服务器都不是cgi/ standalone。
发布于 2016-05-13 18:01:20
我在生产中非常有效地使用Nginx,对于FastCGI连接使用Unix而不是TCP。这个代码片段来自礼节,但是您可以很容易地将它改编成普通的Go api。
func isUnixNetwork(addr string) bool {
return strings.HasPrefix(addr, "/") || strings.HasPrefix(addr, ".")
}
func listenToUnix(bind string) (listener net.Listener, err error) {
_, err = os.Stat(bind)
if err == nil {
// socket exists and is "already in use";
// presume this is from earlier run and therefore delete it
err = os.Remove(bind)
if err != nil {
return
}
} else if !os.IsNotExist(err) {
return
}
listener, err = net.Listen("unix", bind)
return
}
func listen(bind string) (listener net.Listener, err error) {
if isUnixNetwork(bind) {
logger.Printf("Listening on unix socket %s\n", bind)
return listenToUnix(bind)
} else if strings.Contains(bind, ":") {
logger.Printf("Listening on tcp socket %s\n", bind)
return net.Listen("tcp", bind)
} else {
return nil, fmt.Errorf("error while parsing bind arg %v", bind)
}
}看看第252行,它是在TCP连接上的HTTP和Unix域套接字上的FastCGI之间进行切换的。
使用Unix套接字,您必须调整启动脚本,以确保以有序的方式创建具有正确所有权和权限的套接字。如果你做得对,剩下的就很容易了。
要回答关于为什么要使用Nginx的其他评论,这总是取决于您的用例。我有Nginx托管的静态/PHP网站;在这种情况下,将其用作同一服务器上的反向代理非常方便。
https://stackoverflow.com/questions/36878684
复制相似问题