nginx 如何处理大文件

nginx 如何处理大文件

我们在网页上加载一个大约 300KB 大小的 pdf 文件时遇到了问题。该 pdf 由 nginx 提供。每当我加载该文件时,它都会显示一条错误消息Failed to open pdf document,但崩溃的文件大小只有 32KB。我仔细检查了两端的大小。

经过我检查clicked_site(client_max_body_size),我在nginx.conf中添加了以下配置:

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    client_max_body_size 200M;
    client_body_buffer_size 50M;
    client_header_buffer_size 300K;
    large_client_header_buffers 2 1k;

    proxy_buffer_size     40k;
    proxy_buffers      4 32k;

    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    ........

    ........

}

站点启用/默认:

 server {
   server_name www.domain.com;
   #root html;

   location /static/admin/ {
             alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/;
    }

  location / {
             # host and port to fastcgi server
             fastcgi_pass 127.0.0.1:8090;
             fastcgi_param PATH_INFO $fastcgi_script_name;
             fastcgi_param REQUEST_METHOD $request_method;
             fastcgi_param QUERY_STRING $query_string;
             fastcgi_param CONTENT_TYPE $content_type;
             fastcgi_param CONTENT_LENGTH $content_length;
             fastcgi_pass_header Authorization;
             fastcgi_intercept_errors off;
    }

    location /site_media/ {
             alias /intcen_media/;
             #root /flat;
             autoindex on;
    }
}

在 site-media 中我有包含 pdf 和 swf 文件的文件目录。

是否有人发现我的配置中存在会导致此问题的错误?

答案1

使用 curl 或其他工具检查标头,确保您为 PDF 文件指定了正确的 mime 类型。您应该将 mime.types 拉入您的配置中。

如果您这样做,那么我会删除 client_* 和相关缓冲区。我的 nginx 没有这些也能正常工作,并且可以毫无问题地提供 PDF/SWF。

相关内容