问题描述
我有Nginx反向代理,它从上游(清漆缓存)接收brotli压缩响应。但是,仅当我设置为“ brotli on”时,反向代理才会向浏览器提供brotli压缩响应。在反向代理服务器块中。
我的目标是让Nginx反向代理完全不处理压缩。为此,我有以下问题:
-
是否期望反向代理块解压缩接收到的响应并自行处理?它不能直接将上游响应传递回客户端吗?
-
是否可以将代理响应转储到Nginx日志中?这将有助于更好地调试问题。
解决方法
我已解决此问题,因此将其发布给可能遇到类似问题的任何人:
- Varnish将我的“ Accept-Encoding”请求标头更改为“ gzip”。根据Varnish文档,这是设计好的(see here)。
- 但是,上游nginx服务器(位于varnish之后)使用非压缩内容进行响应,因为
gzip_http_version
的默认值为1.0,而proxy_http_version
的默认值为1.1。 (see here)
决议是通过以下方式实现的:
a。通过将-p http_gzip_support=off
传递到varnishd
,将Varnish设置为不必担心压缩。
b。在上游Nginx服务器上将gzip_http_version
设置为1.1
。
破译上述行为成为可能,因为我在上游nginx服务器(清漆后面的一个)上记录了以下内容:
log_format bytes_sent '$bytes_sent' - '$http_accept_encoding' - '$request';