欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx防止流量攻擊的配置詳解

 更新時(shí)間:2017年05月04日 09:23:55   作者:柒  
這篇文章主要給大家分享了Nginx防止流量攻擊的配置方法,文中給出了詳細(xì)的介紹和配置示例代碼,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。

使用場(chǎng)景

最近在工作中遇到一個(gè)問題,項(xiàng)目中報(bào)告查詢系統(tǒng)負(fù)載均衡集群相關(guān)配置已經(jīng)完成,兩種實(shí)現(xiàn)方式分別是基于Ehcache和Redis的session管理策略。

大家都知道服務(wù)器資源有限的,但是客戶端來的請(qǐng)求是無限的(不排除惡意攻擊), 為了保證大部分的請(qǐng)求能夠正常響應(yīng),不得不放棄一些客戶端來的請(qǐng)求,所以我們會(huì)采用Nginx的限流操作, 這種操作可以很大程度上緩解服務(wù)器的壓力, 使其他正常的請(qǐng)求能夠得到正常響應(yīng)。

如何使用Nginx實(shí)現(xiàn)基本的限流,比如單個(gè)IP限制每秒訪問50次。通過Nginx限流模塊,我們可以設(shè)置一旦并發(fā)連接數(shù)超過我們的設(shè)置,將返回503錯(cuò)誤給客戶端。這樣可以非常有效的防止CC攻擊。再配合 iptables防火墻,基本上CC攻擊就可以無視了。下面來看看詳細(xì)的介紹:

如何使用

conf配置

#統(tǒng)一在http域中進(jìn)行配置
#限制請(qǐng)求
limit_req_zone $binary_remote_addr $uri zone=api_read:20m rate=50r/s;
#按ip配置一個(gè)連接 zone
limit_conn_zone $binary_remote_addr zone=perip_conn:10m;
#按server配置一個(gè)連接 zone
limit_conn_zone $server_name zone=perserver_conn:100m;
server {
  listen  80;
  server_name report.52itstyle.com;
  index login.jsp;
  location / {
    #請(qǐng)求限流排隊(duì)通過 burst默認(rèn)是0
    limit_req zone=api_read burst=5;
    #連接數(shù)限制,每個(gè)IP并發(fā)請(qǐng)求為2
    limit_conn perip_conn 2;
    #服務(wù)所限制的連接數(shù)(即限制了該server并發(fā)連接數(shù)量)
    limit_conn perserver_conn 1000;
    #連接限速
    limit_rate 100k;
    proxy_pass  http://report;
  }
}
upstream report {
  fair;
  server 172.16.1.120:8882 weight=1 max_fails=2 fail_timeout=30s;
  server 172.16.1.120:8881 weight=1 max_fails=2 fail_timeout=30s;
}

配置503錯(cuò)誤

默認(rèn)情況,超出限制額度,將會(huì)報(bào)503錯(cuò)誤,提示:

503 Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. Sorry for the inconvenience.
Please report this message and include the following information to us.
Thank you very much!

這樣顯示沒毛病,但是不夠友好,這里我們自定義503錯(cuò)誤。

error_page 500 502 503 504 /50x.html;
location = /50x.html {
 root html;#自定義50X錯(cuò)誤
}

配置說明

limit_conn_zone

是針對(duì)每個(gè)IP定義一個(gè)存儲(chǔ)session狀態(tài)的容器。這個(gè)示例中定義了一個(gè)100m的容器,按照32bytes/session,可以處理3200000個(gè)session。

limit_rate 300k;

對(duì)每個(gè)連接限速300k. 注意,這里是對(duì)連接限速,而不是對(duì)IP限速。如果一個(gè)IP允許兩個(gè)并發(fā)連接,那么這個(gè)IP就是限速limit_rate×2。

burst=5;

這相當(dāng)于在檢查站req旁邊放5個(gè)座位。如果某個(gè)請(qǐng)求當(dāng)時(shí)超過速度限制被攔了,請(qǐng)他在空座位上坐著,等排隊(duì),如果檢查站空了,就可以通過。如果連座位都坐滿了,那就抱歉了,請(qǐng)求直接退回,客戶端得到一個(gè)服務(wù)器忙的響應(yīng)。所以說burst跟request_rate一點(diǎn)關(guān)系都沒有,設(shè)成10000,就是1萬個(gè)請(qǐng)求可以等著排隊(duì),而檢查站還是1秒鐘放行5個(gè)請(qǐng)求(龜速)。而且也不能一直排隊(duì),所以nginx還設(shè)了超時(shí),排隊(duì)超過一定時(shí)間,也是直接退回,返回服務(wù)器忙的響應(yīng)。

以上配置Nginx需要配置以下模塊:

ngx_http_limit_conn_module (static)
ngx_http_limit_req_module (static)

執(zhí)行命令 nginx -V 就可以檢查到是否有安裝。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解

    阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解

    本篇文章主要介紹了阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Nginx實(shí)現(xiàn)會(huì)話保持的兩種方式

    Nginx實(shí)現(xiàn)會(huì)話保持的兩種方式

    在我們做Nginx負(fù)載均衡的時(shí)候經(jīng)常會(huì)遇到會(huì)話保持的問題,為了保證同一用戶session會(huì)被分配到同一臺(tái)服務(wù)器上,這時(shí)就需要會(huì)話保持,本文介紹了兩種方法,感興趣的可以了解一下
    2022-03-03
  • k8s部署ingress-nginx的方法步驟

    k8s部署ingress-nginx的方法步驟

    k8s集群服務(wù)部署好之后,需要對(duì)外提域名訪問,這時(shí)候就需要ingress-nginx了,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Nginx的405 not allowed錯(cuò)誤解決方法

    Nginx的405 not allowed錯(cuò)誤解決方法

    本文主要介紹了Nginx的405 not allowed錯(cuò)誤解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Nginx利用Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP的方法

    Nginx利用Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP的方法

    在站點(diǎn)遇到攻擊且無明顯攻擊特征,造成站點(diǎn)訪問慢,nginx不斷返回502等錯(cuò)誤時(shí),可利用nginx+lua+redis對(duì)該IP進(jìn)行封禁,這篇文章主要給大家介紹了關(guān)于Nginx利用Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP的相關(guān)資料,需要的朋友可以參考下
    2018-12-12
  • Nginx中FastCGI如何配置優(yōu)化

    Nginx中FastCGI如何配置優(yōu)化

    這篇文章主要介紹了Nginx中FastCGI如何配置優(yōu)化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Nginx http運(yùn)行狀況健康檢查配置過程解析

    Nginx http運(yùn)行狀況健康檢查配置過程解析

    這篇文章主要介紹了Nginx http運(yùn)行狀況健康檢查配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 服務(wù)器使用Nginx部署Springboot項(xiàng)目的詳細(xì)教程(jar包)

    服務(wù)器使用Nginx部署Springboot項(xiàng)目的詳細(xì)教程(jar包)

    這篇文章主要介紹了服務(wù)器使用Nginx部署Springboot項(xiàng)目的詳細(xì)教程(jar包),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 詳細(xì)nginx多域名配置的方法

    詳細(xì)nginx多域名配置的方法

    Nginx綁定多個(gè)域名,可通過把多個(gè)域名規(guī)則寫一個(gè)配置文件里實(shí)現(xiàn),也可通過分別建立多個(gè)域名配置文件實(shí)現(xiàn),為了管理方便,建議每個(gè)域名建一個(gè)文件,有些同類域名則可寫在一個(gè)總的配置文件里。下面這篇文章就來詳細(xì)看看nginx多域名配置的方法,有需要的朋友們可以參考。
    2016-12-12
  • 解決nginx服務(wù)器上發(fā)布的新版本代碼總需要清除瀏覽器緩存問題

    解決nginx服務(wù)器上發(fā)布的新版本代碼總需要清除瀏覽器緩存問題

    這篇文章主要介紹了解決nginx服務(wù)器上發(fā)布的新版本代碼總需要清除瀏覽器緩存問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論