使用try_files和gzip_static的nginx仅提供未压缩的服务

时间:2012-06-16 19:05:13

标签: nginx

戴着我的系统管理员帽子,我的一位应用程序开发人员向我提出了这个问题:

在他的app目录中,他在app / assets / javascripts和app / public / javascripts中有javascript文件。在public / javascripts目录中,有未压缩和.gz文件。期望nginx将服务于javascripts的压缩版本。

在应用程序的nginx配置文件中,我添加了这个:

  location /javascripts {
    gzip on;
    gzip_static on;
    try_files /srv/app_dir/current/public/$uri /srv/app_dir/current/assets/$uri;
  }

使用这些参数,应用程序运行正常。找到并提供所有.js文件。但是nginx从未找到并提供文件的gzip版本。

有关此问题的任何建议?

2 个答案:

答案 0 :(得分:0)

Nginx 1.6上不需要未压缩的文件:

    location ~ \.txt$ {
        gzip_static on;
        gunzip on;
    }

curl http://localhost/index.txtcurl -H "Accept-Encoding: gzip" http://localhost/index.txt | gunzip现在只能在我的根目录中找到/srv/www/localhost/index.txt.gz

答案 1 :(得分:0)

我刚刚尝试了@hendry在nginx / 1.13.8上的答案,但它不起作用。当我使用“gzip_static always”时它开始工作了而不是“gzip_static on;”。

location /fd/ {
    gunzip on;
    gzip_static always;
}

cURL输出:

$ curl --silent -H "Accept-encoding: gzip" "http://myhost.com/fd/test.txt" | file -
/dev/stdin: gzip compressed data, from Unix
$ curl --silent "http://myhost.com/fd/test.txt" | file -
/dev/stdin: ASCII text