从公共负载平衡器向nginx分配流量的问题

时间:2019-05-30 06:19:27

标签: azure nginx azure-resource-manager azure-vm-scale-set azure-load-balancer

我正在尝试将负载均衡器的请求分发到天蓝色规模设置实例。

我使用linux vm映像创建了一个比例尺集。在映像中,Nginx已安装在虚拟机中。 Nginx配置如下所示:

server {
    listen 80 default_server;

    server_name _;

    return 301 https://$host$request_uri;
}

server {

    listen 443;
    listen [::]:443;
    server_name 127.0.0.1 127.0.0.1 *.cloudapp.azure.com;
    ssl_certificate /usr/local/etc/ssl/certs/certi/domain-crt.txt;
    ssl_certificate_key /usr/local/etc/ssl/certs/certi/domain-key.txt;
    ssl on;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
    access_log /var/log/nginx/access.log;
    location / {
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-Host $host; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_pass https://127.0.0.1:9000; 
        proxy_redirect http:// https://;
    }


}

另一个应用程序(XYZ)在端口9000中运行。因此,Nginx将请求路由到端口9000。然后,该应用程序(XYZ)使用请求并返回响应。

现在,我使用公共负载均衡器创建了一个秤集。负载平衡器规则是侦听端口80并发送到后端端口80。

要检查实例的运行状况,我发送了一个tcpProbe(端口80,时间间隔5,不正常阈值4)。

有一个与负载均衡器关联的公共IP地址。

但是,即使在浏览器中点击了公共IP地址(或DNS名称)后,我也看不到端口9000中正在运行的应用程序。

我是Azure和Nginx的新手,在实施它方面遇到了困难。我要做的就是使用scale set和loadbalancer运行我的vm映像的多个实例。

创建比例集时创建的资源是pip,vnet,scaleset,lb,nsg。

如何将流量从负载均衡器分配到nginx?任何提示,关于如何调试的建议。

1 个答案:

答案 0 :(得分:1)

流量如下:

端口80上的客户端-> LB(80)-> Nginx(80)重定向到带有位置标头的端口443 端口443上的客户端-> LB(443)-> Nginx(443)另一个重定向到端口9000(不确定它是否是内部重定向)

因此,您需要做的就是在端口443和9000上创建一条LB规则,如果它是重定向到客户端的话,则流保持不变。

相关问题