用nginx實現分散式限流
阿新 • • 發佈:2019-02-19
表示在 myserver 這個叢集上, 使用 名稱為 perip 的限流配置
4.用docker 部署 nginx
將上一步建立的 nginx.conf 配置檔案, 拷貝到linux 目錄 , /root/nginx/ 下 (目錄可以任意), 然後 一個docker 命令部署好 nginx 環境
docker run --name nginx -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -p 8080:80 -d nginx
這裡暴露的是 8080 埠, 通過 8080 埠可以訪問到 nginx 配置中的負載均衡節點, 即 192.168.10.253:8090 ip埠, 這個 ip埠對應的就是 , 第一步建立部署的 hello world 程式.
5. 用程式碼訪問 第一步定義的 helloworld 介面
package com.anuo.study.studydistributed; import com.anuo.app.common.util.HttpUtil; public class StudyNginx { public static void main(String[] args) throws InterruptedException { while (true) { Thread.sleep(100); String s= HttpUtil.sendGet("http://192.168.10.253:8080/test/show/message"); System.out.println(s); } } }
我這裡是 一秒 執行 10次 get 請求, 已經大於了 nginx中配置的 rate=1r/s 一秒一次的請求, 所以會看到 503 報錯, 如下.
如果改哈程式碼, 改為一秒執行一次get 請求, 就不會報錯, 各位可以去試一下
至此 nginx 的限流 已實現.
參考的優質文章:
http://www.ttlsa.com/nginx/nginx-limiting-the-number-of-requests-ngx_http_limit_req_module-module/
http://www.ttlsa.com/nginx/nginx-limited-connection-number-ngx_http_limit_conn_module-module/#comments
官方文件:
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_log_level
https://www.nginx.com/blog/rate-limiting-nginx/
作者: 蔣奎
出處: https://blog.csdn.net/anuocat/article/details/80319151
本文版權歸作者擁有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。