模擬網站限速,是因串接第三方 API,常常會發生網路延遲或對方主機中斷服務的狀況,進而導致自身調用第三方 API 產生異常,為了重現這種情境,協助 API 除錯,所以採用此方式,進而尋找合適的解決方案。
Table of Contents
Toggle功能簡介
Nginx 是一個輕量級的 Web 伺服器,用於處理併發請求,同時也提供了反向代理、負載平衡器、HTTP 快取等功能,在網際網路項目中廣泛應用。
主機架構
模擬三個網域,綁定本機。
Domain | IP | Port |
aaa.cc | 127.0.0.1 | 10090 |
bbb.cc | 127.0.0.1 | 10090 |
ccc.cc | 127.0.0.1 | 10090 |
組態設定
Nginx limit_rate
vim /etc/nginx/conf.d/limit-rate.conf
server {
listen 10090;
server_name aaa.cc;
limit_rate 28;
root /usr/share/nginx/html/aaa;
index index.php index.html index.htm;
}
server {
listen 10090;
server_name bbb.cc;
limit_rate 180;
root /usr/share/nginx/html/bbb;
index index.php index.html index.htm;
}
server {
listen 10090;
server_name ccc.cc;
limit_rate 360;
root /usr/share/nginx/html/ccc;
index index.php index.html index.htm;
}
網站首頁
vim /usr/share/nginx/html/aaa/index.html
<h1>aaa</h1> ok
vim /usr/share/nginx/html/bbb/index.html
<h1>bbb</h1> ok
vim /usr/share/nginx/html/ccc/index.html
<h1>ccc</h1> ok
網域導向
vim /etc/hosts
127.0.0.1 aaa.cc
127.0.0.1 bbb.cc
127.0.0.1 ccc.cc
運行管理
服務熱載入
修改設定檔後,使用 nginx reload 重新載入設定,立即生效。
nginx -s reload
停止服務
啟動服務後,使用 systemctl stop 命令終止服務運行。
systemctl stop nginx
狀態驗證
查看服務狀況。
netstat -ntlp
tcp 0 0 0.0.0.0:10090 0.0.0.0:* LISTEN 685/nginx: master p
測試網址
curl aaa.cc:10090
<h1>aaa</h1> ok (約 7 秒回應)
curl bbb.cc:10090
<h1>bbb</h1> ok (約 1 秒回應)
curl ccc.cc:10090
<h1>ccc></h1> ok (約 1 秒內回應)
心得分享
定位問題,重現狀況,才有利找到問題所在,尋找合適的解決方案,除此之外,還有以下幾種方式可以使用:
nginx limit_rate after
nginx limit rate per ip
nginx limit_rate server