1. 程式人生 > >用nginx實現分散式限流

用nginx實現分散式限流

表示在 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
本文版權歸作者擁有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。