說明: 1 P$ g% J4 ?' U8 O. v定義一個名為 addr 的 zone,空間大小是 10MB,worker 行程會使用這個 zone 所配置的共享記憶體空間來儲存 key 的計數值。我們使用 $binary_remote_addr 來作為判斷來源 IP 的依據(key),會使用這個二進位的變數來作為 key 是因為它跟一般的字串比起來,會比較省空間,如果 zone 所配置的共享記憶體空間用完了,那伺服器就會回傳 503(Service Temporarily Unavailable)的錯誤訊息。5 G0 t: g f. e3 ]9 s
, p/ J5 t; L7 j5 P/ w, \% w. i [" i% A4 @ I: s; R: ? b
接著使用 limit_conn 指定一個 IP 同時間可以允許的最大連線數: 8 e% R. ~ X% B I7 i
location /download/ {" L; u( d$ c# X$ Z% D; A
limit_conn addr 5; ( e6 L$ C6 ]4 J: t* U3 L ^
}
複製代碼
) ?- Y' g( N9 f k% Z3 k1 ^) j, p
或是在 server 段針對Domain而不針對上例的目錄來限制連線 q; r* S3 s! r# @ |; s1 d
. 7 e( b$ o, E0 L# e5 C
.9 n6 e4 B" v- `& b: @
.. T& _9 X: y" y7 T8 i+ o
server { : ^* z2 o- s% p
. % B R- a, Z9 z
.* ?) A; D$ G0 O# o
limit_conn addr 5; + `4 @6 i8 C# S
. # d' P0 l8 S2 I) J: ]' D4 Y
. . D, Y: w; K2 ]* i1 X+ \
}
複製代碼
) O! Z( F _8 f' h $ i( x1 C' e1 L4 h- |: F
連線頻率(每個IP單位時間的連線數) ' ^; G3 Z5 [$ J! r Y" D6 e, k! v5 v ( w }# K& w. U, E$ s2 t + s' l( n/ ?" v4 ^若要限制連線頻率,首先也是一樣要用 limit_req_zone 定義 key 與 zone 參數: ! a8 Z2 ]5 b; _" z; k R4 d