堡垒主机后面有多个流媒体服务器

堡垒主机后面有多个流媒体服务器

我在多台服务器上使用开源流媒体服务器 Red5。这些服务器在堡垒主机后面运行。

全世界都知道这些遗址

http://site1.mydomain.com
http://site2.mydomain.com
http://site3.mydomain.com
http://site4.mydomain.com

要访问前端服务器,请使用 Apache 反向代理。

我也使用 rtmp 在每个网站上进行视频流传输。

为了能够访问流媒体服务器,我在 HTML 页面中嵌入了以下 JavaScript 代码:

<embed .....
var="rtmp://site1.my_domain.com"
>

问题是网站有很多

site1.mydomain.com
site2.mydomain.com
site3.mydomain.com
site4.mydomain.com

每个服务器都位于单独的物理服务器上。这四个服务器都有自己的 Red5 安装,每个服务器的前端都是一个公共堡垒主机。

如果我在每个子域的不同端口上运行 rtmp

我如何确保这样的请求

rtmp://site1.mydomain.com
rtmp://site2.mydomain.com

从前端服务器转到各自的服务器。在这种情况下我需要处理什么?

我立即想到了 IPTABLES,但是当有人在互联网上请求时,客户端浏览器

rtmp://site1.mydomain.com

我如何确保此 rtmp 请求映射到不同于 1935 的端口,因为还有其他三个流媒体服务器也要响应它们各自的请求?

答案1

如果您的用户仅通过代码联系 rtmp 服务器(而不是手动输入 URL,您只需在 URL 本身中指定正确的端口号即可。

例如:

rtmp://site1.mydomain.com:1935
rtmp://site2.mydomain.com:1936
rtmp://site3.mydomain.com:1937
rtmp://site4.mydomain.com:1938

尝试通过 iptables 进行这样的重定向并非易事。iptables 处理的 TCP/IP 标头不包含为到达标头中包含的 IP 地址而执行的 DNS 查找的任何痕迹。

根据 RTMP 的协议格式(我不熟悉),你可能能够像l7 过滤器项目创建检查有效负载的过滤规则。但是,请注意,它不是标准 Linux 内核的一部分,需要您自己进行修补和开发。

相关内容