【发布时间】:2016-12-29 20:24:59
【问题描述】:
我知道 nginx 可以配置为负载平衡器,但我想知道是否可以在代理之间进行负载平衡?假设我在 localhost 上运行了多个代理,我想使用 nginx 提供单点连接,以便我可以在代理之间轮换。我正在尝试实现类似于here 的帖子,它使用 HAProxy 而不是 nginx。我有以下nginx.conf:
events { }
http {
upstream proxies {
server localhost:9998;
server localhost:9999;
server localhost:10000;
}
server {
listen 8080;
location / {
proxy_pass http://proxies;
}
}
}
但是,当我这样发送 curl 请求时:
curl http://icanhazip.com -x localhost:8080
它会忽略 url,如果我像这样直接向其中一个代理服务器发送请求,我会得到类似于我所期望的响应:
curl localhost:9999
当然,我真的没想到它会起作用,因为必须有一些选项告诉 nginx 将上游服务器本身视为代理。但是,我在网上搜索后无法找到如何执行此操作。
【问题讨论】:
-
我不确定你的问题,你的问题是什么,你在说什么代理——因为这里你的 nginx 负载均衡也是一个反向代理——?你的问题是你没有主机头吗?尝试在 proxy_pass 指令之后添加
proxy_set_header Host $host;。 -
我正在尝试使用 nginx 在我设置的多个代理之间进行轮换。换句话说,我希望能够作为代理连接到 nginx 主机和端口(即 localhost:8080),并且它将在我设置的代理之间轮换
-
好的,你试过主机吗?因为反向代理几乎是透明的,所以 nobdy 关心被代理的后端是最终服务器还是某个代理,但您需要知道您实际转发到代理的域。
-
试过了,但由于某种原因似乎不起作用...顺便说一句,我能够在 AWS 上使用弹性负载均衡器和 EC2 实例集群设置相同的东西,但我必须为负载均衡器而不是 HTTP 设置 TCP 规则才能使其工作。不确定这里是否也是这种情况?
-
知道HAProxy是否包含?我想使用您链接到的方法,但将代理列表保存在单独的文件中。