Http 我是否应该始终为web应用程序使用反向代理?

Http 我是否应该始终为web应用程序使用反向代理?,http,web-applications,nginx,go,reverse-proxy,Http,Web Applications,Nginx,Go,Reverse Proxy,我正在用Go编写一个web应用程序。目前,我的布局如下所示: [CloudFlare]-->[Nginx]-->[Program] Nginx执行以下操作: 执行一些重定向(即www.domain.tld-->domain.tld) 添加标题,例如X-Frame-Options 处理静态图像 写入access.log 在过去,我会使用Nginx执行SSL终止和其他一些任务。由于现在由CloudFlare处理,所以它所做的基本上都是静态图像。考虑到Go有一个内置的HTTP文件服务器,Cloud

我正在用Go编写一个web应用程序。目前,我的布局如下所示:

[CloudFlare]-->[Nginx]-->[Program]

Nginx执行以下操作:

  • 执行一些重定向(即
    www.domain.tld
    -->
    domain.tld
  • 添加标题,例如
    X-Frame-Options
  • 处理静态图像
  • 写入
    access.log
在过去,我会使用Nginx执行SSL终止和其他一些任务。由于现在由CloudFlare处理,所以它所做的基本上都是静态图像。考虑到Go有一个内置的HTTP文件服务器,CloudFlare可以为我处理静态图像,我开始想知道为什么Nginx首先会领先


什么都不放在前面被认为是一个坏主意吗?

老实说,我根本不会使用nginx,一些好家伙测试了快速的cgi
cgi
go
+
nginx
,然后直接去独立的库。他得出的结果非常有趣,独立主机在处理请求方面似乎比在
nginx
后面使用它要好得多,最后的建议是,如果您不需要nginx的特定功能,就不要使用它


你可以独立运行它,如果你在你的站点上使用部分/完整的
ssl
,你可以使用另一个go
http
服务器重定向到安全的
https
路由。

在你的情况下,你可以不运行nginx,但我不推荐它

然而,正如我所提到的,它仍然可以做很多事情,你需要在围棋中“重新发明”

  • 内容安全标头
  • SSL(如果CloudFlare和您终止SSL,他们之间的连接是否不安全?)
  • SSL会话缓存&hst
  • 客户端主体限制和头缓冲区
  • 重新启动Go应用程序时的5xx错误页面和维护页面
  • “免费”日志记录(除非您想在Go应用程序中写入所有内容)
  • gzip(同样,除非您想在Go应用程序中实现)

如果您正在运行内部web服务或轻量级的东西,或者确实不需要nginx的额外功能,那么运行Go standalone是有意义的。如果您正在构建web应用程序,那么nginx将帮助从应用程序本身抽象出“web服务器”任务。

如果您不需要ngnix,请不要使用它。 Go在更少的行中执行SSL,然后您必须在ngnix配置文件中写入。 唯一的原因是一个免费的日志记录,但我想知道有多少行代码正在登录。 在俄语中,关于Go中的反向代理有200行代码。 如果可以使用Go代替ngnix,那么使用Go时不需要ngnix。 如果您希望在同一个站点上有多个Go进程或Go和PHP,则需要ngnix。
或者,如果您使用Go,并且在添加ngnix时遇到了一些问题,那么它会解决问题。

nginx在单进程基准测试中的基准测试(39k req/a vs 42k req/s)勉强落后于Go本身。基准测试结果并没有真正影响到大多数用户:我们中很少有人会达到75k请求/秒,但我们中的大多数人都可以利用nginx的额外功能。我不知道OP试图做什么,也不知道他将服务多少用户。如果您有任何理由认为OP应该使用nginx,请随意添加您的答案。@YasirG我不知道有多少用户(几千?)。至于上下文,我不确定还有什么其他信息会有帮助。这将是对公众的免费服务——而不是坐在家里我的树莓皮上的东西。可能会有相当多的用户,但没有持久/长期的连接。带宽将非常低(没有视频)。我想你可以想象它会被贴到HN的正面。这是多少流量?@Mark坦率地说,gzip、错误处理和日志记录等所有重要功能都已经存在于falcore:和beego:等框架中,因此这里没有“重新发明轮子”的时刻。。。99%的时间,您可以在某些框架中找到所需的工具。我想说在你使用nginx之前先试一试。嗯,在CloudFlare终止很好。是的,CloudFlare和服务器之间线路上的MITM能够以明文读取所有内容。CloudFlare确实允许您使用两端都加密的“完整”SSL实现。我想我的终端可以有一个自签名的证书。我还没有注册专业版,所以我不知道如何完整地发表评论。