Nginx limit_rate 限速 7 秒 - IT 484

Nginx limit_rate 限速 7 秒 – IT 484 

  • Post author:
  • Post category:IT / Nginx
  • Post comments:0 Comments
  • Post last modified:2023-01-13

模擬網站限速,是因串接第三方 API,常常會發生網路延遲或對方主機中斷服務的狀況,進而導致自身調用第三方 API 產生異常,為了重現這種情境,協助 API 除錯,所以採用此方式,進而尋找合適的解決方案。

功能簡介

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

發佈留言