Perl

使用 nginx 進行頻寬速度測試

  • August 6, 2014

我有 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__

引用自:https://unix.stackexchange.com/questions/147419