2013-07-08 60 views
6

Chúng tôi sử dụng nginx với máy chủ ứng dụng làm phụ trợ.Nginx: Giới hạn số lượng kết nối đồng thời trên mỗi IP tới phần phụ trợ

Chúng tôi cần giới hạn số lượng kết nối đồng thời trên mỗi IP đến chương trình phụ trợ. Chúng tôi đã sử dụng limit_conn chỉ thị nginx cho mục đích này. Nhưng nó không hoạt động tốt trong mọi trường hợp. Nếu người dùng tạo nhiều kết nối từ một IP và nhanh chóng đóng chúng, sau đó nginx chuyển yêu cầu này đến một chương trình phụ trợ, nhưng vì kết nối máy khách đã bị đóng, kết nối này không được tính trong limit_conn.

Có thể giới hạn số lượng kết nối đồng thời trên mỗi IP đến máy chủ phụ trợ với nginx không?

Trả lời

3

Bạn có thể muốn thiết

proxy_ignore_client_abort off; 

xác định nên kết nối với một máy chủ proxy được đóng lại nếu một khách hàng đóng một kết nối mà không cần chờ đợi một phản ứng.

từ documentation

gợi ý khác là sử dụng limit_req để hạn chế tốc độ theo yêu cầu.

+0

Nhóm phát triển Nginx cũng đề xuất sử dụng 'proxy_ignore_client_abort off'. Nó hoạt động cho đến nay. – Anton

0

Tôi e ngại cơ sở này chưa có sẵn cho nginx ra khỏi hộp. Theo Nginx FAQ

Nhiều người dùng đã yêu cầu Nginx thực hiện một tính năng trong bộ cân bằng tải để hạn chế số lượng yêu cầu mỗi phụ trợ (thường là một). Trong khi hỗ trợ cho điều này được quy hoạch, đó là đáng nói đến là nhu cầu cho tính năng này là bắt nguồn từ hành vi sai trái trên một phần của ứng dụng được proxy

Tôi đã nhìn thấy một số mô-đun bên thứ 3 cho nginx-limit-upstream đó nhưng tôi đã không bao giờ cố gắng.

Các vấn đề liên quan