1. 程式人生 > >nginx介紹,流量及併發連線數限制,訪問控制及ddos預防

nginx介紹,流量及併發連線數限制,訪問控制及ddos預防

7.訪問控制及 DDOS 預防

1.訪問控制配置

基於各種原因,我們要進行訪問控制。比如說,一般網站的後臺都不能讓外部訪問,所以要新增 IP 限制,通常只允許公司的 IP 訪問。訪問控制就是指只有符合條件的 IP 才能訪問到這個網站的某個區域。

涉及模組:ngx_http_access_module

模組概述:允許限制某些 IP 地址的客戶端訪問。

對應指令:

  • allow

語法: allow address | CIDR | unix: | all;

預設值: —

作用域: http, server, location, limit_except

允許某個 IP 或者某個 IP 段訪問。如果指定 unix,那將允許 socket 的訪問。注意:unix 在 1.5.1 中新加入的功能,如果你的版本比這個低,請不要使用這個方法。

  • deny

語法: deny address | CIDR | unix: | all;

預設值: —

作用域: http, server, location, limit_except

禁止某個 IP 或者一個 IP 段訪問。如果指定 unix,那將禁止 socket 的訪問。注意:unix 在 1.5.1 中新加入的功能,如果你的版本比這個低,請不要使用這個方法。

配置範例:

location / {
    deny192.168.1.1;
    allow192.168.1.0/24;
    allow10.1.1.0/16;
    allow2001:0db8::/32;
    deny  all;
}

規則按照順序依次檢測,直到匹配到第一條規則。 在這個例子裡,IPv4 的網路中只有 10.1.1.0/16 和 192.168.1.0/24 允許訪問,但 192.168.1.1 除外;對於 IPv6 的網路,只有 2001:0db8::/32 允許訪問。

ngx_http_access_module 配置允許的地址能訪問,禁止的地址被拒絕。這只是很簡單的訪問控制,而在規則很多的情況下,使用 ngx_http_geo_module 模組變數更合適。這個模組大家下來可以瞭解 : ngx_http_geo_module

2.DDOS 預防配置

DDOS 的特點是分散式,針對頻寬和服務攻擊,也就是四層流量攻擊和七層應用攻擊,相應的防禦瓶頸四層在頻寬,七層的多在架構的吞吐量。對於七層的應用攻擊,我們還是可以做一些配置來防禦的,使用 nginx 的 http_limit_conn 和 http_limit_req 模組通過限制連線數和請求數能相對有效的防禦。

ngx_http_limit_conn_module 可以限制單個 IP 的連線數

ngx_http_limit_req_module 可以限制單個 IP 每秒請求數

配置方法:

(1). 限制每秒請求數

涉及模組:ngx_http_limit_req_module

通過漏桶原理來限制單位時間內的請求數,一旦單位時間內請求數超過限制,就會返回 503 錯誤。

配置範例:

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    ...
    server {
        ...
        location  ~ \.php$ {
            limit_req zone=one burst=5 nodelay;  
               }
           }
     }

必要配置說明(上一部分解釋過的就不再解釋):

$binary_remote_addr 二進位制遠端地址

rate=10r/s; 限制頻率為每秒 10 個請求

burst=5 允許超過頻率限制的請求數不多於 5 個,假設 1、2、3、4 秒請求為每秒 9 個,那麼第 5 秒內請求 15 個是允許的;反之,如果第一秒內請求 15 個,會將 5 個請求放到第二秒,第二秒內超過 10 的請求直接 503,類似多秒內平均速率限制。

nodelay 超過的請求不被延遲處理,設定後 5(不延時)+10(延時)個請求在 1 秒內處理。(這只是理論資料,最多的情況)

(2).限制 IP 連線數

上一章講過,我們就直接寫出來

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m; //上面講過
    ...
    server {
        ...
        location /操作目錄/ {
            limit_conn addr 1;   
                }
           }
     }

(3).白名單設定

http_limit_conn 和 http_limit_req 模組限制了單 IP 單位時間內的連線和請求數,但是如果 Nginx 前面有 lvs 或者 haproxy 之類的負載均衡或者反向代理,nginx 獲取的都是來自負載均衡的連線或請求,這時不應該限制負載均衡的連線和請求,就需要 geo 和 map 模組設定白名單:

geo $whiteiplist  {
        default 1;
        10.11.15.1610;
    }
map $whiteiplist$limit {
        1$binary_remote_addr;
        0"";
    }
limit_req_zone $limit zone=one:10m rate=10r/s;
limit_conn_zone $limit zone=addr:10m;

geo 模組定義了一個預設值是 1 的變數 whiteiplist,當在 ip 在白名單中,變數 whiteiplist 的值為 0,反之為 1

  • 下面是設定的邏輯關係解釋:

如果在白名單中--> whiteiplist=0 --> $limit="" --> 不會儲存到 10m 的會話狀態(one 或者 addr)中 --> 不受限制;

反之,不在白名單中 --> whiteiplist=1 --> $limit=二進位制遠端地址 -->儲存進 10m 的會話狀態中 --> 受到限制。

3.動手測試 DDOS 預防配置

下面我們就來測一下剛剛的配置是否起到了作用。

1.安裝所有測試所需的軟體(原始碼安裝 nginx,apt 安裝 php5-fpm,apt 安裝 apach-u) 為了便於修改配置檔案,這裡選擇原始碼安裝 nginx:

wget http://labfile.oss.aliyuncs.com/nginx-1.7.9.tar.gz

接下來編譯安裝。

sudo apt-get install apache2-utils
sudo apt-get install php5-fpm

安裝好以後 分別啟動 php5 和 nginx。

2.寫一個測試的 php 檔案,修改 nginx 配置檔案,使其能正常訪問。

在/home/shiyanlou 目錄下寫一個 test.php,內容如下:


nginx 配置檔案修改:

相關推薦

nginx介紹流量併發連線限制訪問控制ddos預防

7.訪問控制及 DDOS 預防 1.訪問控制配置 基於各種原因,我們要進行訪問控制。比如說,一般網站的後臺都不能讓外部訪問,所以要新增 IP 限制,通常只允許公司的 IP 訪問。訪問控制就是指只有符合條件的 IP 才能訪問到這個網站的某個區域。 涉及模組:ngx_http_access_module 模組

Nginx限制IP併發連線每秒處理請求

為了防止伺服器被惡意採集或ddos攻擊給搞死, 所以給限個速。 這裡主要使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module來控制訪問量. 這兩個模組在Nginx中已內建, 在nginx.conf檔案

nginx最大併發連線的思考:worker_processes、worker_connections、worker_rlimit_nofile

無論是看過的nginx有關書還是網上看到的有關nginx 配置說明的文章(http://wiki.nginx.org/EventsModule#worker_connections),無一例外,在講到 worker_connections 和 max_clients這兩個概念的關係時都一致的一筆帶過

CentOS6.8檢視nginx併發連線和TCP連線狀態命令

荊軻刺秦王 1.檢視nginx執行程序數 [[email protected] ~]# ps -ef|grep nginx |wc -l 6 檢視httpd程序數 [[email 

Centos6.5檢視nginx併發連線和TCP連線狀態命令

1、檢視nginx執行程序數 [[email protected] logs]# ps -ef | grep nginx | wc -l 10 2、檢視Web伺服器程序連線數 [[email protected] logs]# netstat -antp

Nginx限制訪問速率和最大併發連線模組--limit (防止DDOS攻擊)

Nginx限制訪問速率和最大併發連線數模組–limit (防止DDOS攻擊) Tengine版本採用http_limit_req_module進行限制 和官方nginx類似,不過支援多個變數,並且支援多個limit_req_zone的設定。比如:

Tomcat併發優化修改service.xml效能調優 增加最大併發連線

可以在控制檯的啟動資訊裡看見,預設狀態下沒有被開啟nio配置,啟動時的資訊,如下: 2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init 資訊: Initializing Coyote HTTP/1.1 on http-8080 2010

NGINX:檢視併發連線

Nginx檢視併發連線 通過介面檢視 通過介面檢視通過web介面檢視時Nginx需要開啟status模組,也就是安裝Nginx時加上 --with-http_stub_status_module 然後配置Nginx.conf,在server裡面加入如下內容:

IIS 之 連線併發連線、最大併發工作執行緒、佇列長度、最大工作程序數

轉載: 參考:https://blog.csdn.net/enweitech/article/details/79815137 https://blog.csdn.net/enweitech/article/details/79815137 https://blog.csdn.net/b

IIS最大併發連線

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

MySQL檢視最大併發連線

MySQL檢視最大併發連線數 MySQL效能相關 最大併發連線數檢視 :show variables like ‘%max_connections%’; 重新設定最大併發連線數:set global max_connections=1000 修改/etc/my.cn

TCP高併發連線

單機最大tcp連線數 網路程式設計 在tcp應用中,server事先在某個固定埠監聽,client主動發起連線,經過三路握手後建立tcp連線。那麼對單機,其最大併發tcp連線數是多少? 如何標識一個TCP連線 在確定最大連線數之前,先來看看系統如何標識一個tcp

【轉】SignalR站點瀏覽器連線限制分析解決方案

SignalR 搭建實時重新整理應用雖然非常方便,但是有個問題你必須考慮到,就是一般的瀏覽器,對於SignalR的全雙工通訊方式,絕大多數瀏覽器都只支援6個新視窗,如果你開啟第7個,那麼新的框口頁面是不會載入的。 這其實是客戶端瀏覽器的限制,這是以連線的域名為單位來限制,

Nginx的請求限制_請求連線限制配置原理

Nginx的請求限制_請求連線數限制配置原理 1、http_limit_req_module詳解     http_limit_req_module:限制http請求頻率     官網解釋:     The&n

iis最大併發連線、佇列長度、最大併發執行緒、最大工作程序數

最大併發連線數:  1、影響因素: a.網站html請求,html中的圖片資源,html中的指令碼資源,其他需要連線下載的資源等等,任何一個資源的請求即一次連線(雖然有的資源請求連線響應很快) b.如果網頁採用框架(框架內部巢狀網頁請求),那麼一個框架即一次連線 c.

Tomcat容器做到自我保護設定最大連線(服務限流:tomcat請求限制)

http://itindex.net/detail/58707-%E5%81%87%E6%AD%BB-tomcat-%E5%AE%B9%E5%99%A8 為了確保服務不會被過多的http長連線壓垮,我們需要對tomcat設定個最大連線數,超過這個連線數的請求會拒絕,讓其負載到其它機器。達到保護自己的同時起到

提升linux下TCP伺服器併發連線(limit)

https://cloud.tencent.com/developer/article/1069900 1、修改使用者程序可開啟檔案數限制   在Linux平臺上,無論編寫客戶端程式還是服務端程式,在進行高併發TCP連線處理時,最高的併發數量都要受到系統對使用者單一程序同時可開

檢視oracle連線數以活躍連線

select t.INST_ID, count(*) count_all, sum(case when t.STATUS = 'ACTIVE' then 1 else

Linux 調優方案 修改最大連線(ulimit命令)

Linux對於每個使用者,系統限制其最大程序數。為提高效能,可以根據裝置資源情況,設定各linux 使用者的最大程序數 可以用ulimit -a 來顯示當前的各種使用者程序限制。 下面我把某linux使用者的最大程序數設為10000個:      ulimit -u 1

Cacti監控Tcp併發連線

轉自:http://blog.sina.com.cn/s/blog_5093fd5001015kw4.html 我的環境是 Version 0.8.7i 步驟一 從http://forums.cacti.net/download/file.php?id=5198下