如何将 nginx brotli_static 与 proxy_pass 一起使用?
How can I use nginx brotli_static with proxy_pass?
nginx 是在启用 Brotli 的情况下编译的。在我的 nginx.conf
http {
...
brotli_static on;
}
我的 .br 文件位于 proxy_pass
.
的服务器上
location / {
...
proxy_pass http://app;
}
并且已在 app
服务器上生成了 .br 文件:
$ ls -lh public/js/dist/index.js*
-rw-r--r-- 1 mike wheel 1.2M Apr 4 09:07 public/js/dist/index.js
-rw-r--r-- 1 mike wheel 201K Apr 4 09:07 public/js/dist/index.js.br
下载未压缩的文件有效:
wget https://example.com/js/dist/index.js
下载 1,157,704 大小的未压缩文件。
wget -S --header="accept-encoding: gzip" https://example.com/js/dist/index.js
下载一个 309,360 大小的 gzip 文件。
但是:
wget -S --header="accept-encoding: br" https://example.com/js/dist/index.js
仍然得到完整的 1,157,704 大小的未压缩文件。
我曾希望 brotli_static
也会代理 .br 文件请求 - 向后端发送 GET 请求以获取 .br 等效资源 - 但这不会似乎没用。
brotli_static可以通过proxy_pass吗?
基于 Maxim Dounin (an nginx core engineer)'s comment on gzip_static - 我想 brotli_static 的行为类似于 - brotli_static 只处理文件,不处理 HTTP 资源:
That is, gzip_static is only expected to work when nginx is about to return regular files.
所以看起来 brotli_static 和 proxy_pass 是不可能的。
您的 nginx 配置文件需要一个部分来告诉它为静态内容文件夹提供服务。您不希望您的应用服务器这样做。
我相信您需要将它放在 location /
之前,以便它优先。
nginx 是在启用 Brotli 的情况下编译的。在我的 nginx.conf
http {
...
brotli_static on;
}
我的 .br 文件位于 proxy_pass
.
location / {
...
proxy_pass http://app;
}
并且已在 app
服务器上生成了 .br 文件:
$ ls -lh public/js/dist/index.js*
-rw-r--r-- 1 mike wheel 1.2M Apr 4 09:07 public/js/dist/index.js
-rw-r--r-- 1 mike wheel 201K Apr 4 09:07 public/js/dist/index.js.br
下载未压缩的文件有效:
wget https://example.com/js/dist/index.js
下载 1,157,704 大小的未压缩文件。
wget -S --header="accept-encoding: gzip" https://example.com/js/dist/index.js
下载一个 309,360 大小的 gzip 文件。
但是:
wget -S --header="accept-encoding: br" https://example.com/js/dist/index.js
仍然得到完整的 1,157,704 大小的未压缩文件。
我曾希望 brotli_static
也会代理 .br 文件请求 - 向后端发送 GET 请求以获取 .br 等效资源 - 但这不会似乎没用。
brotli_static可以通过proxy_pass吗?
基于 Maxim Dounin (an nginx core engineer)'s comment on gzip_static - 我想 brotli_static 的行为类似于 - brotli_static 只处理文件,不处理 HTTP 资源:
That is, gzip_static is only expected to work when nginx is about to return regular files.
所以看起来 brotli_static 和 proxy_pass 是不可能的。
您的 nginx 配置文件需要一个部分来告诉它为静态内容文件夹提供服务。您不希望您的应用服务器这样做。
我相信您需要将它放在 location /
之前,以便它优先。