52AV手機A片王|52AV.one

 找回密碼
 立即註冊
查看: 1292|回復: 0

[nginx|php-fpm] nginx限制某個IP同一時間的連線數及頻寬

[複製鏈接]
發表於 2016-3-30 23:00:43 | 顯示全部樓層 |閱讀模式
tid=34035&對於負載量比較高的伺服器,可以設定每一位使用者可使用的資源上限,例如同時間最大連線數、連線頻率(每秒或每分鐘連線次數)以及下載速度。& q8 l" L! v6 g0 e

  f/ O  d& n3 T+ f9 w( Z同時間最大連線數若要限制同時間最大連線數,首先要使用 limit_conn_zone 定義一個 key 與 zone 參數:
  1. limit_conn_zone $binary_remote_addr zone=addr:10m;
複製代碼
說明:
- [1 C9 O# J+ H* {: X定義一個名為 addr 的 zone,空間大小是 10MB,worker 行程會使用這個 zone 所配置的共享記憶體空間來儲存 key 的計數值。我們使用 $binary_remote_addr 來作為判斷來源 IP 的依據(key),會使用這個二進位的變數來作為 key 是因為它跟一般的字串比起來,會比較省空間,如果 zone 所配置的共享記憶體空間用完了,那伺服器就會回傳 503(Service Temporarily Unavailable)的錯誤訊息。2 n- Y# K! H1 J% z, r" M; [' ~
- U" R7 L! B% s6 K( X
; }$ O$ j7 E2 n/ N2 q
接著使用 limit_conn 指定一個 IP 同時間可以允許的最大連線數:
" F0 ^7 r" R) G% [
  1. location /download/ {
    0 {6 T% K! f% o- I( U: c
  2.   limit_conn addr 5;
    : {0 d/ z8 O, F! W) K3 v
  3. }
複製代碼
2 [% h' K$ o0 b; o' D" V! I5 k- G
0 I$ G9 L& B7 q
或是在 server 段針對Domain而不針對上例的目錄來限制連線

  G" I# K+ r$ ?7 F
  1. ." m! U6 w" {/ U% `. _
  2. .
    9 }1 _6 }6 q* _" p& P4 F4 R$ r0 {
  3. .
    # S9 E& r; ]7 f# L" E3 e6 R2 @
  4. server {
    # s* `8 c3 K0 s( g/ p% e8 P
  5.   .
    ( `+ K3 i3 S$ R! i: @/ @. j) m
  6.   .
    ! |! K( b" B5 I9 \; [0 k5 T0 x. D
  7.   limit_conn addr 5;
    5 k# I8 V4 B2 `! d* A  A
  8.   .6 B, g# }+ U2 I* o: A( Z9 H. L
  9.   ., T" n5 ?& B6 _5 s
  10. }
複製代碼

! T" w  V3 C% Q, u; s- _

; q9 u  }3 z4 M3 {9 Q$ q連線頻率(每個IP單位時間的連線數)
# r6 I& r9 A5 a# j
2 ?# n% ]3 e1 R9 z! R: W' n
, y0 {1 ]1 o; u& K& K$ |+ T. r! B- x
若要限制連線頻率,首先也是一樣要用 limit_req_zone 定義 key 與 zone 參數:6 P9 v, x+ H# X+ g0 |; h6 f. r: m
  1. limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
複製代碼

1 t! ?, i4 ~2 y# R) l除了定義 zone 的名稱與大小之外,還加上了一個 rate 指定連線頻率的上限,單位可以使用每秒的連線次數(r/s)或是每分鐘的連線次數(r/m),r是request
例如若要指定每分鐘不可超過 30 次連線,則設定為 30r/m。
9 q* [. `. R/ p0 X! l% t5 z
. a2 i: ?7 u1 t# N8 Y! E! Z

- P, p% `" |. ^) @然後在需要限制連線頻率的地方加上 limit_req 的設定:

, \- _! z$ o( T, s% R
  1. location /download/ {
    2 w2 w6 X! r' E: O0 D
  2.   limit_req zone=one burst=5;
    # v  Z% R% B+ }6 m
  3. }
複製代碼

$ d- H4 f4 A0 i) ?8 |
或是在 server 段針對Domain而不針對上例的目錄來限制頻率
% ?) X) X) k) e; p! M
  1. .
    6 Y0 K" s/ |0 \3 \: k& u& {& ]
  2. .
    / k8 k6 P' q, J0 }; T
  3. .5 n8 ]% d3 U, `" T
  4. server {, M/ j! ~, [# c$ H
  5.   .
    3 G& m* c' q; }8 {9 ?3 T5 J, {
  6.   .
    ' |7 O. ]  h2 K3 K( }
  7.   <span style="font-family: Tahoma;">limit_req zone=one burst=5;</span>( S2 `: b7 B' ^3 _# E
  8.   .
    : T0 \6 Q9 E, h" a3 Y
  9.   .
    " _0 u0 U4 f. e8 R
  10. }
複製代碼

3 T$ C$ B# Q  O, K5 a

8 q7 b" j% N- |+ O0 z( `結論:

5 h2 _: P% t* V( @* v6 _1 ]8 h! E/ f# k( B! b7 Q) A
對於以上的設定可以有效防止駭客攻擊以及那些有心之徒試圖消耗你無畏的頻寬
% M( W0 J$ @. I7 X
; v. y: O9 J! y& B& v  n
其他請參閱 :: }: Z7 I* X9 ^' X& f
https://blog.gtwang.org/linux/ng ... address-tutorial/2/
: ~4 W: Q8 [9 yhttp://www.nginx.cn/446.html% b4 i* h4 X! t' v
' W2 @6 _$ ^5 m1 l  p# T$ A
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則



中文酷站排行榜

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板| 52AV手機A片王

GMT+8, 2024-10-29 04:27 , Processed in 0.108398 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表