如何配置nginx作为代理的负载均衡器?

b_p*_*kes 9 proxy curl nginx

我知道nginx可以配置为充当负载均衡器,但我想知道是否有可能在代理之间进行负载平衡?假设我有多个代理在localhost上运行,我想使用nginx提供单点连接,以便我可以在代理之间轮换.我试图在这里实现类似于帖子的东西,它使用的是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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我发送这样的卷曲请求时:

curl http://icanhazip.com -x localhost:8080
Run Code Online (Sandbox Code Playgroud)

它忽略了url,如果我直接向其中一个代理服务器发送请求,我会收到类似于我的预期的响应:

curl localhost:9999
Run Code Online (Sandbox Code Playgroud)

当然,我并没有真正期望它能够工作,因为必须有一些选项来告诉nginx将上游服务器视为代理本身.但是,我在网上搜索后无法找到如何做到这一点.

Ale*_*dar 1

正如您在 haproxy 帖子 haproxy akt 作为转发代理中看到的

选项 http_proxy

手册中描述了此选项的含义https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20http_proxy

有时人们需要一个纯粹的 HTTP 代理,它可以理解基本的代理请求,无需缓存或任何花哨的功能。在这种情况下,可能值得设置一个设置了“option http_proxy”的 HAProxy 实例。在此模式下,不声明服务器,连接将转发到 URL 中“http://”方案后找到的 IP 地址和端口。

不执行主机地址解析,因此仅在传递纯 IP 地址时才有效。由于此选项的使用范围相当有限,因此可能只有知道自己确实需要它的专家才会使用它。这与HTTP隧道模式不兼容。

据我所知nginx没有这个功能。

类似的问题是这样的。 https://superuser.com/questions/604352/nginx-as-forward-proxy-for-https

为什么您不能按照链接帖子中的描述使用 haproxy?