![nginx 如何处理大文件](https://linux22.com/image/569519/nginx%20%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E5%A4%A7%E6%96%87%E4%BB%B6.png)
我们在网页上加载一个大约 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。