說明:# O& d8 q. T8 r. E
定義一個名為 addr 的 zone,空間大小是 10MB,worker 行程會使用這個 zone 所配置的共享記憶體空間來儲存 key 的計數值。我們使用 $binary_remote_addr 來作為判斷來源 IP 的依據(key),會使用這個二進位的變數來作為 key 是因為它跟一般的字串比起來,會比較省空間,如果 zone 所配置的共享記憶體空間用完了,那伺服器就會回傳 503(Service Temporarily Unavailable)的錯誤訊息。 K3 ^2 O. C" E+ o2 {- c
! f1 p0 L! f/ I1 F# N3 N
% t# @) d$ N# R. i5 e5 x8 X
接著使用 limit_conn 指定一個 IP 同時間可以允許的最大連線數:& O# r, w$ r# S R2 G% K, I E
location /download/ {/ H- Y. F0 f5 J' Q
limit_conn addr 5;' O" }: d: q# g4 B
}
複製代碼
/ O, K+ b: k, Y
) f9 v0 O' U; w( R3 b! n7 h* Y0 p5 a或是在 server 段針對Domain而不針對上例的目錄來限制連線) V) P. g+ v- K
. ; A0 o0 S$ y& l) ?: n+ C6 r. @
.9 q& M. g$ C0 `7 Q
.. N; _% a8 d" Z
server {% k1 c2 M$ ~- K; i4 O4 K
.' ]; S$ I3 m9 O4 ]7 z8 |3 {
. C; B6 w* {9 q+ X
limit_conn addr 5;; Y, J: }5 N2 i" i x' ]
.' ^* V/ O' R' w$ s/ E- x1 p1 @0 I+ s; X
.3 V. @& k3 _) @4 T
}
複製代碼
, J5 t) l5 S1 |" H* R; F$ b% A$ L& d+ |7 X* o
連線頻率(每個IP單位時間的連線數)8 u8 W9 c% p' f7 d( L2 ^3 y
" O% J& w/ N# H: Z+ J 0 Y/ m, m& x' { k' q4 `若要限制連線頻率,首先也是一樣要用 limit_req_zone 定義 key 與 zone 參數: 8 y5 g6 ^. t5 `8 l