【问题标题】:Gzip on Spring server or Nginx (reverse proxy)?Spring 服务器或 Nginx(反向代理)上的 Gzip?
【发布时间】:2020-12-26 12:49:52
【问题描述】:

非常直接的问题:

在 Spring 服务器上启用 gzip 的优缺点是什么? nginx? Spring Server 仅用于服务 RESTful api 请求(json),Nginx 在 Spring server 之前用作反向代理

我四处寻找,但似乎没有人给出很好的答案。这个答案(Using GZIP compression with Spring Boot/MVC/JavaConfig with RESTful)谈到应该在 nginx 上启用它,因为它更有效(IRL 人这样做)

所以我想知道是否有人有这方面的经验?人们通常做什么?

【问题讨论】:

    标签: java spring-boot nginx


    【解决方案1】:

    大多数人会建议在 nginx 上启用它。我们的想法是让 Spring 从尽可能多的工作中解放出来,因为:

    • Spring 每个请求和连接使用的内存比 nginx 多得多。
    • Spring 在处理请求时可能会保持数据库连接。而且数据库服务器上的数据库连接也很昂贵。
    • 如果负载需要,Springnginx 更难扩展,也更昂贵。

    对于大多数设置,差异很小且不明显。我从来没有在实践中测量过它。其他人可能有更多经验。

    【讨论】:

      【解决方案2】:

      如果您关心性能:不要为此使用 Nginx!

      Nginx gzip 进程是一个内容过滤器,这与send_file 优化不兼容(更多细节在https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/#enabling-sendfile):

      启用 sendfile 指令消除了将数据复制到缓冲区的步骤,并允许将数据从一个文件描述符直接复制到另一个。

      因此,我建议为此使用 HTTP 代理(您可以使用另一个 Nginx!我一直在做的事情),并设置 proxy_cache

      Nginx -- (代理缓存) --> Nginx -- gzip --> CSS/JS 文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-16
        • 2017-07-17
        • 2020-08-19
        • 2020-06-29
        • 2020-09-22
        • 2016-09-07
        • 2020-04-19
        • 2020-09-29
        相关资源
        最近更新 更多