NGINX 负载平衡 Turn 服务器

2023-11-25

我正在尝试将负载均衡器放在 Turn 服务器前面,以便与 WebRTC 一起使用。我在下面的示例中使用单轮服务器,直到负载均衡器正常工作。 Turn 服务器需要多个端口,包括一个 UDP,如下所示:

  • TCP 80
  • TCP 443
  • TCP 3478
  • TCP 3479
  • UDP 3478

我尝试在 Turn Server 前面放置一个 Amazon Elastic Load Balancer (AWS 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 创建了一个自定义负载均衡器配置文件,并将以下内容放入其中。

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;
    }
}

根据自定义 load-balancer.conf 文件,http 和 https 流量似乎工作正常。

我不确定为什么我在 nginx.conf 文件中配置的 TCP/UDP 端口没有按预期工作。


您的 NGINX 负载均衡器配置良好。

我建议验证以下内容:

  1. Amazon EC2 Turn Server 实例中的安全组应具有与负载均衡器配置相匹配的入站端口。
  2. 检查轮流服务器上的配置文件,并验证它正在侦听的端口是否与您在负载均衡器上转发的端口相同。例如,您的 NGINX 配置上转发了 TCP 3479。您需要确保转弯服务器正在侦听该端口。
  3. 最后,您可能还需要设置一些类似于您在 Turn 服务器上设置的 IP 表。检查 Turn Server 的配置,看看是否需要在负载均衡器上进行任何 iptables 或 ip6table 配置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NGINX 负载平衡 Turn 服务器 的相关文章

  • 使用 Nginx 或 Apache 来提供动态内容? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 错误:从上游读取响应标头时上游过早关闭连接 [uWSGI/Django/NGINX]

    我目前在用户正在进行的查询中总是得到 502 它通常返回 872 行 在 MySQL 中运行需要 2 07 然而 它返回了大量信息 每一行包含很多东西 有任何想法吗 运行 Django tastypie Rest API Nginx 和 u
  • 找不到 NGINX brew 安装命令

    I do brew install nginx and get gt Downloading http nginx org download nginx 1 2 2 tar gz Already downloaded Library Cac
  • nginx 和 uwsgi 非常大的文件上传(>3Gb)

    也许有人知道该怎么做 我正在尝试上传大于 3Gb 的文件 没问题 如果我使用以下配置上传高达 2Gb 的文件 Nginx client max body size 5g client body in file only clean clie
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • Beanstalk 部署忽略 .ebextensions 中的 nginx 配置文件

    我在单实例 Elastic Beanstalk 环境中托管 Java Web 应用程序 并添加了几个 ebextension 文件 这些文件在每次部署时成功为我创建配置文件 然而 我无法找到一种方法让 Beanstalk 在 etc ngi
  • Kubernetes Ingress 在 nginx 反向代理后面运行

    我已经在可以从互联网访问的服务器上安装了 minikube 我创建了一个可用的 kubernetes 服务 gt kubectl get service myservice NAME CLUSTER IP EXTERNAL IP PORT
  • Nginx 是否也缓冲来自客户端的 http 请求?

    我知道 Nginx 可以缓冲来自上游服务器的响应 我的问题是 Nginx 是否也缓冲来自客户端的 http 请求 我的意思是 如果 Nginx 从客户端收到 http 请求 它是否立即与上游服务器建立连接 或者它会在收到整个http请求后创
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • Bluemix 负载均衡器算法

    使用什么算法来平衡 Bluemix 上运行的多个实例之间的 HTTP 负载 看来我可以使用自动伸缩服务来水平扩展 想知道平衡负载时使用什么算法 Cloud Foundry 使用循环负载平衡在应用程序的运行实例之间分配请求
  • 使用代理协议的 kubernetes nginx 入口最终出现损坏的标头

    我尝试使用代理协议在 google 容器上设置 nginx 入口 nodeport 以便可以将真实 IP 转发到后端服务 但最终导致标头损坏 2017 02 05 13 48 52 error 18 18 2 broken header H
  • 为什么将域连接到“Shopify”需要 CNAME 和 A 记录?

    为什么将域连接到 Shopify 需要CNAME and ARecord ref https help shopify com en manual domains add a domain using existing domains co
  • 我的 s3 存储桶如何使用 nginx 在不同文件夹中托管多个网站?

    我在 Amazon 上有一个 s3 Cloudfront 解决方案 我想在存储桶内的不同文件夹中托管不同的网站 并通过以下两种方式之一访问它们 子域 gt mywebsite1 mydomain com 或者 路径 gt www mydom
  • Nginx 作为负载均衡器,具有 75% 和 25% 加权路由

    我是 Nginx 新手 我有两台服务器 serverA 和 serverB 我希望 75 的请求发送到 serverA 其余 25 的请求发送到 serverB 这可能吗 使用nginx加权路由 stream upstream stream
  • Docker 网络 - nginx:[emerg] 在上游找不到主机

    我最近开始迁移到 Docker 1 9 和 Docker Compose 1 5 的网络功能来取代使用链接 到目前为止 通过链接 nginx 通过 docker compose 连接到位于一组中不同服务器中的 php5 fpm fastcg
  • Google 计算负载均衡器在 DELETE 时抛出 400 Bad Request

    我通过实例模板创建了一个实例组 并将该实例组与 http 负载均衡器使用的后端服务对齐 现在 当我从我创建的实例组中打开实例虚拟机的 URL 时 我可以执行以下操作GET POST and DELETE请求和所有请求都很快 一切都按预期进行
  • 为什么需要将nginx中的$args重定向到index.php?

    许多 PHP 框架建议将其添加到 nginx location try files uri index php is args args 执行index php在所有 HTTP 请求上 为什么我需要 is args args 我觉得 arg
  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有

随机推荐

  • 单元测试 Assert.AreEqual 失败

    我对从集合中获取对象的方法进行了单元测试 这一直失败 我不明白为什么 所以我在下面创建了一个非常简单的测试来创建 2 个供应商对象并测试它们是否相等 看看我是否可以在代码测试中发现问题 但这次测试再次失败 谁能看到或解释为什么 TestMe
  • 是否可以对 @media 规则进行 CSS @supports 检查?

    support 规则允许对 CSS 属性进行功能查询 我想知道是否可以对特定的 media 规则进行功能检查 例如 我想知道浏览器是否支持 media指针或任意指针条件 supports media pointer fine Or supp
  • 如何在 等元素上使用“内联”SVG 渐变?

    是否可以实现这个梯度而不必先定义它
  • Java删除ArrayList中重复的对象[重复]

    这个问题在这里已经有答案了 我有一个非常长的 ArrayList 由对象组成 但是其中一些对象无疑是重复的 查找和删除这些重复项的最佳方法是什么 注意 我编写了一个返回布尔值的compareObjects 方法 Example List
  • 像往常一样将子项目文件夹添加到存储库

    我注意到在我的目录中有两个模块是我的 Git 存储库的子项目 发生这种情况是因为我将它们全部移至一个 Git 存储库 并且这些模块 目录 有自己的 git目录 当我更改这些模块中的任何内容时 我在主 Git 存储库中看不到任何更改 我只会看
  • Edittext android 自动对焦

    我在活动开始时遇到问题 Android 自动将焦点放在第一个编辑文本上 我如何防止安卓这样做 看一看here 或者您可以隐藏键盘 启动活动时焦点仍保留在 EditText 上 android windowSoftInputMode stat
  • 另存为带有分号分隔符的 CSV

    我目前正在使用此功能进行保存 但我有一个问题 Private Sub spara ActiveWorkbook SaveAs Filename T filepath ActiveWorkbook Name FileFormat xlCSV
  • 如何创建仍可由 [] 运算符访问的常量值的 std::map?

    我需要一个只读的 std map 数据结构 这意味着我必须用数据填充一次 然后只读取这些值 永远不要更改它们或添加其他值 我的非常量版本如下所示 in h include
  • 在 Swift 中测试 Decimal 是否为整数

    使用斯威夫特 3 我在网上找到了很多奇怪的解决方案来检查是否Decimal对象是一个整数 一切都感觉比实际需要的要复杂得多 这是我的解决方案 extension Decimal var isWholeNumber Bool return s
  • 使用 HttpClientFactory 安全吗?

    在我的 asp net core MVC 应用程序中 我使用HttpClientFactory创造HttpClient向 API 服务器发出请求的对象 遵循微软文档 HttpClient每次我调用时都会创建新的对象HttpClientFac
  • jQuery ui datepicker,从 onSelect 获取星期几

    是否可以从日期选择器的 onSelect 事件中获取星期几 我知道我可以获得该月的某一天 但我想要星期几 即使只是当天索引也可以 例如0 6 我知道您可以在 beforeShowDay 或类似 事件中获得它 但我需要根据所选的星期几做出不同
  • 分割过大的路径时,Google 地图高程服务响应不准确

    这是一个有一定细节程度的问题 所以让我首先解释一下情况 然后解释我的实现 最后提出问题 以便您最好地理解 截至 4 月 4 日 添加了更新 问题范围缩小到一个待决问题 请参阅此问题的底部以获取最新信息 TLDR 我有一条从 Google M
  • MSTest 是否有相当于 NUnit 的 TestCase 的工具?

    我找到了TestCaseNUnit 中的功能非常有用 可以作为指定测试参数的快速方法 而无需为每个测试使用单独的方法 MSTest中有类似的东西吗 TestFixture public class StringFormatUtilsTest
  • Entity-Bean (JPA) 中的单向关系

    如何在 EJB 3 0 Entity Beans JPA 中建立单向关系 例如 客户知道订单 但订单对客户没有任何方法 使用 OneToMany 或 OneToOne 或 ManyToMany Regards 这是制作单向的方法 OneTo
  • git 浅克隆(clone --深度)错过远程分支

    克隆远程存储库后 它不会通过 a 选项显示任何远程分支 可能是什么问题呢 如何调试呢 在此代码片段中 未显示两个远程分支 git clone depth 1 git git savannah gnu org pythonwebkit git
  • facebook,android java.lang.IllegalStateException:无法执行任务:任务已在运行

    登录后我可以进行FB查询 几分钟后 玩游戏 Facebook 请求失败异常 java lang IllegalStateException Cannot execute task the task is already running 当我
  • PHP这里如何避免无限递归?

    考虑这个类 class test public function set n v echo set called n this gt other set n v true public function other set name val
  • “索引”对象没有属性“tz_localize”

    我正在尝试转换 csv 文件中时间 日期列 Created At 中 GMT 时间的所有实例 以便其全部采用 EST 格式 请看下面 import pandas as pd from pandas tseries resample impo
  • String.intern() 线程安全有保证吗?

    是否有任何书面保证String intern 线程安全吗 javadoc 提到了它 但没有直接解决它 返回字符串对象的规范表示 一池 字符串最初为空 由 String 类私有维护 当调用intern方法时 如果池中已经包含一个 由 equa
  • NGINX 负载平衡 Turn 服务器

    我正在尝试将负载均衡器放在 Turn 服务器前面 以便与 WebRTC 一起使用 我在下面的示例中使用单轮服务器 直到负载均衡器正常工作 Turn 服务器需要多个端口 包括一个 UDP 如下所示 TCP 80 TCP 443 TCP 347