6

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

在他的 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 版本。

有什么解决这个问题的建议吗?

4

2 回答 2

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在我的根目录中找到。

于 2014-07-10T22:43:53.727 回答
0

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

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

卷曲输出:

$ 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
于 2018-01-29T15:25:44.700 回答