Perl
使用 nginx 進行頻寬速度測試
我有 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 實現上傳速度測試還是需要使用一些程式語言?
我找到了使用 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__