Nginx的sendfile报无效参数分析

今天观察Nginx的错误日志,发现有一些客户端下载文件时,报下列错误。
[quote]
2010/07/17 09:26:53 [alert] 505#0: *764839 sendfile() failed (22: Invalid argument),
[/quote]
为了查出原因,在服务器上对此请求的IP进行抓包分析,发现原来是HTTP包头中的Range字段有问题。

请求包头中的Range字段信息:
[quote]
Range: bytes=281851-
[/quote]
回应包头中的信息:
[quote]
Content-Length: -77764
Content-Range: bytes 281851-204086/204087
[/quote]

分析原因:
因为前段时间,nginx的perl模块程序写的有问题,导致用户取得的文件大小大于实际文件的大小。现在用户请求的起始偏移量大于文件的实际大小,导致sendfile报出了无效参数的错误。

解决方法:
修改模块程序,对起始偏移量与实际文件大小进行比较判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值