将后端压缩到 nginx 反向代理数据的最佳方法是什么?

ano*_*one 5 compression nginx reverse-proxy gzip

我们将运行一个 nginx 反向代理,它将通过互联网从后端提取数据。

我们所说的通过互联网是指后端计算机不会与前端反向代理位于一个局域网上。

我们认为,在通过互联网发送这些请求之前,最好先处理一下这些请求。

在我看来,它应该像这样工作:

客户端请求带有接受编码标头或 gzip 的内容。

反向代理将其发送到后端服务器。

由于发送了 gzip 的接受编码标头,后端会压缩此内容。

请求在链上一路发送压缩。

我们都可以做到这一点,因为它非常简单。我的问题是,如果我们在 nginx 反向代理端启用了 gzip 压缩,这将如何工作?

nginx 会尝试对已经 gzip 压缩的内容进行 gzip 压缩吗?

希望这是有道理的。谢谢。

更新1:

我了解缓存已经(以及此服务)gzip 内容的含义。我们将修改缓存密钥以包含接受编码标头,从而根据用户代理可以接受的内容提供(并缓存)正确压缩/未压缩的内容。

Fle*_*der 5

不会的,在反向代理和后端服务器上设置gzip是没有问题的。至少我从来没有遇到过任何问题。代理将识别已经压缩的内容并简单地传送它。

如果您希望从后端压缩任何内容,只需添加适当的标头即可。

proxy_set_header Accept-Encoding "gzip";
Run Code Online (Sandbox Code Playgroud)

  • 我们测试并在后端实现了 gzipping。需要注意的是:不建议使用 proxy_set_header Accept-Encoding gzip 除非您使用(我们启动的)nginxgunzip(是的,它称为gunzip)模块。否则,您将向不支持压缩的客户端提供 gzip 压缩内容。使用gunzip模块,您可以使用proxy_set_header Accept-Encoding gzip,并在需要时让nginx解压缩内容。 (3认同)