前言
通常,我們跟電信業者申請網路後,我們會進行測速,可能使用 speedtest.net 這種網站。但是這是用來測外網的,如果要測內網呢?可能有些人會說 iperf3。確實,他是一個相當好的工具。但像我這麼懶的人呢,還是會覺得有些麻煩。
偶然在網路上看到一款名為 OpenSpeedTest 的工具。我眼睛一亮,感覺這東西不錯。他是一款寫的相當簡單的工具,基本上機器有 Nginx 跟一個資料夾就能用了。是一款在網頁端就能簡單測速,又有圖形化結果的小工具。
安裝工具
你的 Linux 上必須要有 Git、Nginx 等工具。
sudo apt-get -y update && sudo apt-get install -y git nginx nginx-extras
接著,我們進入 /var/www
目錄。
cd /var/www
使用 Git 下載開源專案上的內容
sudo git clone https://github.com/openspeedtest/Speed-Test
因為個人喜好,稍微幫他改個資料夾名稱
sudo mv Speed-Test speedtest
配置 Nginx
這邊我會參考官方 openspeedtest/Nginx-Configuration 的配置,稍微改變一下成我慣用的,你看完也可以參考看看。
進入 /etc/nginx
資料夾
cd /etc/nginx
編輯 nginx.conf
檔案
sudo vim nginx.conf
我們只需要改開頭一些地方就好。
user www-data;
worker_rlimit_nofile 100000;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 4096;
multi_accept on;
}
接著進入 /etc/nginx/sites-enabled/
資料夾
cd /etc/nginx/sites-enabled/
建立一個名為 speedtest
的檔案
sudo vim speedtest
貼上以下內容
server {
listen 3000;
listen [::]:3000;
root /var/www/speedtest;
index index.html;
client_max_body_size 35m;
error_page 405 =200 $uri;
access_log off;
gzip off;
fastcgi_read_timeout 999;
log_not_found off;
server_tokens off;
error_log /dev/null;
tcp_nodelay on;
tcp_nopush on;
sendfile on;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
location ~ /\.well-known/acme-challenge/ {
allow all;
default_type "text/plain";
root /var/www/speedtest;
try_files $uri =404;
break;
}
location / {
add_header 'Access-Control-Allow-Origin' "*" always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header Cache-Control 'no-store, no-cache, max-age=0, no-transform';
add_header Last-Modified $date_gmt;
if_modified_since off;
expires off;
etag off;
if ($request_method = OPTIONS ) {
add_header Access-Control-Allow-Credentials "true";
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
return 200;
}
}
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
access_log off;
expires 365d;
add_header Cache-Control public;
add_header Vary Accept-Encoding;
tcp_nodelay off;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
}
}
完成後,驗證並重啟 Nginx
sudo nginx -t && sudo systemctl restart nginx
檢視成果
我們在上方設置了 Port 在 3000,所以我們開啟 伺服器IP:3000
就可以看到測速網站。你可以直接進行簡易的測速。
結語
這是一個簡易的測速網站,很適合簡易測內/外網的速度,但是畢竟是網頁,總可能被網頁伺服器等各種因素拖後腿。所以,如果你要一個正式有效的測試環境,還是建議使用 iperf 之類的哦!