Apache-2.2
nginx proxy_cache:限制對後端的並行請求
我使用 nginx 作為後端的反向代理。配置非常基本,例如核心只是:
upstream myservice { server 127.0.0.1:80; server 123.123.123.123:80; } location / { proxy_pass http://myservice; proxy_set_header Host myservice; }
現在我的服務計算量很大,我希望 nginx 將對單個上游後端的活動並行(同時)請求的數量限制為例如 10。
我查看了limit_req模組,但是這個模組似乎只關注每分鐘傳入的請求。我特別想限制活動後端連接的數量;即考慮請求是否已經返回。這可能嗎?
在 Varnish 中,這可以使案例如
backend cpu1 { .host = "127.0.0.1"; .port = "80"; .max_connections = 20; }
但是我需要為此使用 nginx。
看看limit_conn模組。雖然我發現的所有範例都是關於遠端 IP 限制的,但如果您將常量傳遞給 limit_conn_zone 而不是遠端 IP,您將受到與伺服器的總連接數的限制。
像這樣的東西:
upstream myservice { server 127.0.0.1:80; server 123.123.123.123:80; } set $const 1; limit_conn_zone $const zone=one:1m; location / { limit_conn one 10; proxy_pass http://myservice; proxy_set_header Host myservice; }
**編輯:**這個模組似乎只在更新版本的 nginx 中可用(可能 >=v1.1.8)。如果您想使用此選項並擁有舊版本的 nginx,則可能需要從原始碼編譯。
**編輯 2:**如果您的 nginx 僅執行代理職責,請查看worker_connections