我们将运行一个nginx反向代理,它将通过Internet从后端获取数据。
我们的意思是通过互联网的后端机器将不会在前面向反向代理的LAN上。
我们认为在将这些请求通过互联网发送之前,可以很好地处理这些请求。
我看到它的方式应该是这样的:
客户端使用accept-encoding标头或gzip请求内容。
反向代理将其发送到后端服务器。
后端压缩此内容,因为gzip的接受编docker被发送。
请求发送一路上压缩的链。
我们都可以做得很直接。 我的问题是,如果我们在nginx反向代理端启用了gzip压缩,这将如何工作?
Nginx会尝试gzip已经gzip的内容吗?
希望这是有道理的。 谢谢。
更新1:
我了解caching已经(和这个服务)gzipped内容的影响。 我们将修改caching键以包含accept编docker,从而根据用户代理可以接受的内容提供(caching)正确压缩/未压缩的内容。
不,在逆向代理和后端服务器上设置gzip没有问题。 至less我从来没有任何问题。 该代理将识别已经压缩的内容,并简单地交付。
如果你想从后台压缩任何内容,只需添加适当的头文件。
proxy_set_header Accept-Encoding "gzip";
http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_http_version – gzip压缩后端响应所需的HTTP请求版本默认为1.1。
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version – 代理模块默认使用的HTTP请求版本是1.0
这意味着,默认情况下,当代理从后端请求浏览器时,浏览器GET 1.1请求会将其自身转换为GET 1.0请求。 后端需要1.1来执行gzip压缩,所以不会压缩响应。
我的build议是使用proxy_http_version 1.1;
在反向代理上,并在标准的gzip on;
等后端服务器的设置。
还有两件事需要优化。 一个是“gzip_static”(一个额外的模块)的设置。 当对“index.html”提出请求时,该设置会查找并提供“index.html.gz”文件(如果存在)。 这对CPU使用率有积极的影响,因为压缩不是即时执行的。
至于你的问题的其他部分,实际上被压缩的是用gzip_types选项设置的。 默认情况下,只有text / html被压缩。 如果你有gzip文件,你应该小心排除它们。 如果使用*
选项(压缩所有内容),那么在发送之前,压缩文件也将使用gzip进行压缩。 这对于大多数图像(jpg,png,gif)来说并不是最佳的,因为它们已经实现了某种LZW压缩层。 因此压缩压缩文件的结果只是在减less甚至增加大小,而使用大量的CPU资源来执行压缩。 您应该根据请求的频率和请求的内容的types(或者它的压缩率)仔细检查要压缩的内容。 就图像而言,使用额外的工具(optipng等)优化它们比开启gzip压缩更有效。