如何配置nginx充当代理的负载均衡器?
我知道,nginx可以配置为充当负载均衡器,但我想知道是否有可能在代理之间进行负载平衡?比方说,我有多个在本地主机上运行的代理,并且我想使用nginx提供单个连接点,以便我可以在代理之间轮换。我正在尝试实现类似于here的后续操作,该操作使用HAProxy而不是nginx。我有以下nginx.conf
:如何配置nginx充当代理的负载均衡器?
events { }
http {
upstream proxies {
server localhost:9998;
server localhost:9999;
server localhost:10000;
}
server {
listen 8080;
location/{
proxy_pass http://proxies;
}
}
}
然而,当我发送一个卷曲的请求是这样的:
curl http://icanhazip.com -x localhost:8080
它忽略了网址,我也得到类似的东西,如果我有我期望的回应直接发送一个请求,像这样的代理服务器之一:
curl localhost:9999
当然,我真的没有想到它的工作,因为必须有一些选项来告诉nginx的治疗UPS tream服务器作为代理本身。但是,在线搜索后,我无法找到如何做到这一点。
,你可以在你的HAProxy的后HAProxy的AKT看到作为转发代理
选项HTTP_PROXY
什么这个选项的意思是在手动https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20http_proxy
描述它有时会发生人们需要一个纯粹的HTTP代理,其中 可以理解基本代理请求而无需缓存,也不需要任何花哨的 功能。在这种情况下,可能需要使用“选项http_proxy”设置HAProxy实例 。在这种模式下,没有服务器被宣布, 和连接转发到IP地址和端口 的URL发现后的“http://”方案。
不进行主机地址解析,所以当纯 IP地址通过这仅适用。由于此选项的使用范围相当有限,因此只能由专家知道他们完全需要 。这与HTTP隧道模式不兼容。
就我所知,nginx没有这个功能。
一个类似的问题吧。 https://superuser.com/questions/604352/nginx-as-forward-proxy-for-https
为什么你不能使用链接文章中描述的haproxy?
HaProxy不允许您在配置中包含文件。我想管理一个导入的proxies.list文件。 Nginx是否包含,但显然你不能转发请求到一个HTTP代理? – chovy
nginx文档说上游是使用循环法分发的。
默认情况下,请求使用 加权轮循均衡方法
https://nginx.org/en/docs/http/ngx_http_upstream_module.html
服务器之间的分布式您将需要配置代理服务器或者加权或其他
负载平衡规则类似max_fails = 1 fail_timeout = 10s;
Can you put max_fails =1 and fail_timeout=10s; after the proxies
server localhost:9998 max_fails =1 and fail_timeout=10s;
server localhost:9999 max_fails =1 and fail_timeout=10s;
server localhost:10000 max_fails =1 and fail_timeout=10s;
change location /{
to location @proxy{
你能提供完整的例子吗? – chovy
我不确定你的问题,你的问题是什么,你叫什么叫代理 - 因为你在这里你的nginx负载均衡也是一个反向代理 - ?你的问题是你有没有主机头?尝试在proxy_pass指令之后添加'proxy_set_header Host $ host;'。 – regilero
我正在尝试使用nginx在我设置的多个代理之间轮换。换句话说,我希望能够作为代理连接到nginx主机和端口(即localhost:8080),并且它将在我设置的代理之间旋转 –
好了,您是否尝试过主机的东西?因为反向代理几乎是透明的,所以nobdy会关心被代理的后端是最终服务器还是一些代理,但是您需要知道您正在动态转发到代理的域是什么。 – regilero