我在 nginx 上有以下配置:
location ~* ^/assets/ {
add_header Access-Control-Allow-Headers content-type;
add_header Access-Control-Allow-Origin *;
add_header Cache-Control "public, max-age=31536000";
proxy_pass http://nas-mydomain.com;
proxy_next_upstream http_500 timeout;
gzip_http_version 1.0;
gzip_static always;
gzip_vary on;
etag on;
}
我的目标是在可用时以 gzip 压缩形式提供该文件夹中的静态内容。
我当然创建了如下文件:
test.js
test.js.gz
我可以访问每个文件,并且所有标头以及 etag 都正确设置。但是,gzip 检索不起作用。例如,我像这样测试它:
curl -H "Accept-Encoding: gzip" http://domain.com/assets/test.js | gunzip
## Cutted useless output
gunzip: unknown compression format
所以我猜这不管用。我还尝试过以下方法收听:
strace -p pid1 -p pid2 -p pid3.... 2>&1 | grep gz
没有运气。
当然,如果我这么做:
curl http://domain.com/assets/test.js.gz | gunzip
## Cutted useless output
一切都很完美。
有什么提示吗?
nginx -v = nginx version: nginx/1.8.0
#--with-http_gunzip_module --with-http_gzip_static_module are present
答案1
您正在执行 proxy_pass,这就是问题所在。从服务器本身提供这些文件,即使用“root /some/path”指令,一切都应该正常工作。