http - 我是否应该始终为 Web 应用程序使用反向代理?

标签 http web-applications nginx go reverse-proxy

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

[CloudFlare] --> [Nginx] --> [程序]

Nginx 执行以下操作:

  • 执行一些重定向(即 www.domain.tld --> domain.tld)
  • 添加 X-Frame-Options 等 header 。
  • 处理静态图片。
  • 写入 access.log

过去我会使用 Nginx 来执行 SSL 终止和其他一些任务。由于现在由 CloudFlare 处理,它所做的一切本质上都是静态图像。鉴于 Go 有一个内置的 HTTP FileServer 并且 CloudFlare 可以为我接管处理静态图像,我开始想知道为什么 Nginx 一开始就处于领先地位。

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

最佳答案

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

但是,正如我提到的 in this answer它仍然可以做很多事情,你需要在 Go 中“重新发明”。

  • 内容安全 header
  • SSL(如果 CloudFlare 和您之间的连接终止 SSL,那么他们之间的连接是否不安全?)
  • SSL session 缓存和 HSTS
  • 客户端正文限制和 header 缓冲区
  • 重新启动 Go 应用程序时出现 5xx 错误页面和维护页面
  • “免费”日志记录(除非您想在 Go 应用中编写所有内容)
  • gzip(同样,除非你想在你的 Go 应用中实现它)

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

关于http - 我是否应该始终为 Web 应用程序使用反向代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902338/

相关文章:

django - 在 nginx 背后使用 Daphne

java - 通过在 java 中编码获取 URL 响应

android - Android设备错误地解析了服务器中的日期时间

django - 在 Google App Engine 上为 Django 应用程序启用 CORS

security - 在不安全的情况下公开安全 Web 应用程序的静态资源有哪些危险?

jquery - 使用 jquery mobile 自动调整内容页面大小

ubuntu - 充当代理的 Nginx 容器

http - 缓存控制:私有(private)和公共(public)

api - 对于具有 GET 语义的超大请求应该使用什么 HTTP 动词?

java - 您如何在不同的暂存环境中维护 java webapps?