Nginx:关闭 PDF 文件的 gzip

Nginx:关闭 PDF 文件的 gzip

我正在使用此代码通过 PHP 提供文件下载服务:

$file='file.pdf';
$filepath="/path-to-download-folder/$file";

if(!file_exists($filepath)){
  header('HTTP/1.1 404 Not Found');
  exit;
}elseif(!is_file($filepath) or !is_readable($filepath)){
  header('HTTP/1.1 403 Forbidden');
  exit;
}else{
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Content-Type: '.mime_content_type($filepath));
    header('Content-Length: '.filesize($filepath));
    header('Content-Disposition: attachment; filename="'.$file.'"');

    set_time_limit(0); // Big files/slow connections may result in incomplete downloads
    readfile($filepath);
    exit;
}

然而有些人收到了损坏的 PDF 文件。

例如:http://mlkshk.com/r/8FGS

在 Nginx 中我有这个:

    gzip on;
    gzip_disable "msie6";
    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

我的问题是:如何设置不对 PDF 文件进行 gzip 压缩?也许这就是问题所在……

谢谢。

答案1

使用您当前的配置,您无法对 PDF 进行 gzip 压缩,但您可以使用 Firebug 或 Google PageSpeed 等工具进行检查

http://wiki.nginx.org/NginxHttpGzipModule#gzip_types

gzip_types
syntax: gzip_types mime-type [mime-type ...]

default: gzip_types text/html

context: http, server, location

Enables compression for additional MIME-types besides "text/html". "text/html" is always compressed.

但是,您是否尝试过使用 x-sendfile?

http://wiki.nginx.org/XSendfile

相关内容