NGINX。 OpenShift 集群之间的负载平衡。如何获取上游服务器的名称?

NGINX. Load balancing between OpenShift clusters. How get name of server under upstream?

我有一个在两个 OpenShift 集群上运行的应用程序,我想使用 Nginx(免费)进行负载平衡。

我的 OS 路由使用 Passthrought 终止类型,所以我需要传递 ssl_name 和主机 headers 来解析服务。

我的 Nginx conf 的一部分:

upstream backend {
    server.com.one
    server.com.two max_fails ...
}

server {
    ...
    proxy_ssl_name $proxy_host;
    proxy_set_header Host $proxy_host;
    proxy_pass https://backend;
}

变量$proxy_hostreturn后端,不是server.com.oneserver.com.two.

如何获取上游下的服务器名称? 也许我可以在 proxy_ssl_name?

中传递两个服务器的连接之类的东西

其他解决方案?

您可以将每个上游包装到中间服务器块:

upstream backend {
    # server.com.one
    127.127.0.1:2000;
    # server.com.two
    127.127.0.2:2000 max_fails ...;
}

server {
    proxy_pass https://backend;
}

server {
    listen 127.127.0.1:2000;
    location / {
        proxy_pass https://server.com.one;
    }
}

server {
    listen 127.127.0.2:2000;
    location / {
        proxy_pass https://server.com.two;
    }
}