如何在proxy_pass中使用nginx brotli_static?

时间:2017-04-04 12:07:16

标签: nginx proxy brotli ngx-brotli

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文件请求 - 向.br等效资源的后端发送一些GET请求 - 但这似乎不会工作。

brotli_static可以通过proxy_pass工作吗?

2 个答案:

答案 0 :(得分:0)

基于Maxim Dounin(一名nginx核心工程师)' s comment on gzip_static - 我认为brotli_static的行为类似于 - brotli_static只处理文件,而不是HTTP资源:

  

也就是说,只有当nginx即将返回常规文件时,才能使用gzip_static。

所以看起来像brotli_static和proxy_pass是不可能的。

答案 1 :(得分:0)

您的nginx配置文件需要一个部分来告诉它提供静态内容文件夹。您不希望您的应用服务器执行此操作。

我相信您需要将它放在location /之前,以便它优先。