我有 nginx-1.4.1 的服务器。
我想测试我的桌面和服务器之间的带宽。
我可以通过从服务器简单下载大小为 10M 的文件来测试传入速度,并计算我需要的时间。
而且我还需要测试上传速度,但是nginx默认情况下无法上传文件。
我尝试使用这个配置:
location /upload {
client_max_body_size 100M;
return 200 ok;
}
但是当我尝试将一些文件上传到服务器时,curl "http://server_name/upload" --data @downloads/smric-6_0_3.tar.gz -i -v -H 'Content-Length: 20490365'
我会在获取请求正文之前看到 nginx 的答案。
我可以只用nginx和curl来实现上传速度测试还是需要使用一些编程语言?
答案1
我找到了使用 perl 解决这个问题的方法。
http {
....
perl_modules perl;
perl_require upload.pm;
server {
...
location /http {
root /usr/share/nginx/html;
autoindex on;
}
location /ping {
return 200 Ok;
}
location /download {
alias /usr/share/nginx/html/test_file.bin;
}
location /upload {
perl upload::handler;
client_max_body_size 100m;
}
}
}
和 perl 脚本:
package upload;
use nginx;
sub handler {
my $r = shift;
if ($r->request_method ne "POST") {
return DECLINED;
}
if ($r->has_request_body(\&post)) {
return OK;
}
return HTTP_BAD_REQUEST;
}
sub post {
my $r = shift;
$r->send_http_header;
$r->print("Ok\n");
return OK;
}
1;
__END__