Tôi biết rằng nginx có thể được cấu hình để hoạt động như một bộ cân bằng tải, nhưng tôi tự hỏi liệu có thể cân bằng tải giữa các proxy không? Hãy nói rằng tôi có nhiều proxy chạy trên localhost, và tôi muốn sử dụng nginx để cung cấp một điểm kết nối duy nhất để tôi có thể xoay giữa các proxy. Tôi đang cố gắng để đạt được một cái gì đó tương tự như bài here, được sử dụng HAProxy thay vì nginx. Tôi có sau nginx.conf
:Làm thế nào để cấu hình nginx hoạt động như một bộ cân bằng tải cho proxy?
events { }
http {
upstream proxies {
server localhost:9998;
server localhost:9999;
server localhost:10000;
}
server {
listen 8080;
location/{
proxy_pass http://proxies;
}
}
}
Tuy nhiên, khi tôi gửi một yêu cầu curl như thế này:
curl http://icanhazip.com -x localhost:8080
Nó bỏ qua các url, và tôi nhận được một phản ứng tương tự như những gì tôi mong đợi nếu tôi có đã gửi yêu cầu trực tiếp tới một trong các máy chủ proxy như vậy:
curl localhost:9999
Tất nhiên, tôi không thực sự mong đợi nó hoạt động, vì phải có một số tùy chọn để nói với nginx để điều trị máy chủ tream là proxy. Tuy nhiên, tôi không thể tìm thấy cách thực hiện việc này sau khi tìm kiếm trực tuyến.
Tôi không chắc chắn về vấn đề của bạn, vấn đề của bạn là gì, và bạn đang gọi một proxy - như ở đây bạn cân bằng tải nginx cũng là một proxy ngược -? Là vấn đề của bạn thực tế bạn không có tiêu đề máy chủ? Thử thêm máy chủ lưu trữ 'proxy_set_header Host $;' sau lệnh proxy_pass. – regilero
Tôi đang cố gắng sử dụng nginx để xoay giữa nhiều proxy mà tôi đã thiết lập. Nói cách khác, tôi muốn có thể kết nối với máy chủ nginx và cổng (ví dụ: localhost: 8080) làm proxy, và nó sẽ xoay giữa các proxy mà tôi đã thiết lập –
Ok, và bạn đã thử điều chủ nhà? Bởi vì một proxy ngược lại gần như trong suốt, bạn không quan tâm nếu backend được ủy quyền là các máy chủ cuối cùng hoặc cũng có một số proxy, nhưng bạn cần biết miền nào bạn đang chuyển tiếp tới proxy. – regilero