微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NGINX负载平衡转弯服务器

我试图将一个Load Balancer放在Turn Server前面,以便与WebRTC一起使用.我在下面的示例中使用了一个转向服务器,直到我让负载均衡器工作.转弯服务器需要多个端口,包括一个UDP,如下所示:

> TCP 80
> TCP 443
> TCP 3478
> TCP 3479
> UDP 3478

我曾尝试在Turn Server前放置Amazon Elastic Load Balancer(AW​​S ELB),但它不支持UDP端口.所以我现在在EC2实例上运行Ubuntu,所有这些端口都打开,我已经安装了Nginx.

我编辑了/etc/Nginx/Nginx.conf文件并为其添加一个“stream”部分,其中包含每个端口的上游和服务器.但是,它似乎没有正确传递流量.

stream {
    # IPv4 Section
    upstream turn_tcp_3478 {
        server 192.168.1.100:3478;
    }
    upstream turn_tcp_3479 {
        server 192.168.1.100:3479;
    }
    upstream turn_upd_3478 {
        server 192.168.1.100:3478;
    }

    # IPv6 Section
    upstream turn_tcp_ipv6_3478{
        server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:3478;
    }
    upstream turn_tcp_ipv6_3479{
        server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:3479;
    }
    upstream turn_udp_ipv6_3478{
        server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:3478;
    }

    server {
        listen 3478; # tcp

        proxy_pass turn_tcp_3478;
    }
    server {
        listen 3479; # tcp
        proxy_pass turn_tcp_3479;
    }
    server {
        listen 3478 udp;
        proxy_pass turn_upd_3478;
    }
    server {
        listen [::]:3478;
        proxy_pass turn_tcp_ipv6_3478;
    }
    server {
        listen [::]:3479;
        proxy_pass turn_tcp_ipv6_3479;
    }
    server {
        listen [::]:3478 udp;
        proxy_pass turn_udp_ipv6_3478;
    }
}

我还在/etc/Nginx/conf.d/load-balancer.conf中创建了一个@R_502_6268@负载均衡器配置文件,并在其中放置了以下内容.

upstream turn_http {
    server 192.168.1.100;
}
upstream turn_https {
    server 192.168.1.100:443;
}

upstream turn_status {
    server 192.168.1.100:8080;
}

upstream turn_ipv6_http {
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:80;
}
upstream turn_ipv6_https {
    server [2600:myaw:esom:e:ipv6:addr:eswo:ooot]:443;
}

server {
    listen 80; 

    location / {
        proxy_pass http://turn_http;
    }
}

server {
    listen 443 ssl;

    server_name turn.awesomedomain.com;
    ssl_certificate /etc/ssl/private/Nginx.ca-bundle;
    ssl_certificate_key /etc/ssl/private/Nginx.key;

    location / {
        proxy_pass https://turn_https;
    }
}

server {
    listen 8080;

    location / {
        proxy_pass http://turn_status;
    }
}

server {
    listen [::]:80; 

    location / {
        proxy_pass http://turn_ipv6_http;
    }
}

server {
    listen [::]:443 ssl;

    server_name turn.awesomedomain.com;
    ssl_certificate /etc/ssl/private/Nginx.ca-bundle;
    ssl_certificate_key /etc/ssl/private/Nginx.key;

    location / {
        proxy_pass https://turn_ipv6_https;
    }
}

根据@R_502[email protected]文件,http和https流量似乎正常工作.

我不确定为什么我在ngnix.conf文件中配置的TCP / UDP端口无法按预期工作.

解决方法:

您对Nginx Load Balancer的配置很好.

我建议验证以下内容

> Amazon EC2 Turn Server实例中的安全组应具有与Load Balancer配置匹配的入站端口.
>检查您的转弯服务器上的配置文件,并验证它正在侦听的端口是否与您在负载均衡器上转发的端口相同.例如,您在Nginx配置上转发了TCP 3479.您需要确保转弯服务器正在侦听该端口.
>最后,您可能还需要设置一些类似于您在Turn Server上设置的IP表.查看Turn Server的配置,看看是否需要在Load Balancer上执行任何iptables或ip6table配置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐