公司使用的是Nginx做文件服務器,最近服務器流量增大,老板提出要給每個客戶端進行限速。
在Nginx中進行限速配置:
http { limit_zone one $binary_remote_addr 10m; server { location /download/ { limit_conn one 1; limit_rate 300k; } } }
結果提示錯誤:nginx: [emerg] unknown directive "limit_zone" in xxxx
查過資料之后才知道,原來Nginx從v1.1.8版本之后就用limit_conn_zone替換掉了limit_zone,具體見:nginx v1.1.8新語法 limit_conn_zone 替換和 limit_conn 用法。
當我修改之后,就可以啟動了
http { limit_conn_zone $binary_remote_addr zone=one:10m; #容器共使用10M的內存來對於IP傳輸開銷 server { location /download/ { limit_conn one 1; #限制每個IP只能發起一個並發連接 limit_rate 300k; #對每個連接限速300k。 } } } #注意,這里是對連接限速,而不是對IP限速。 #如果一個IP允許兩個並發連接,那么這個IP就是限速limit_rate×2。