FFserver 和 Apache 位于同一端口

FFserver 和 Apache 位于同一端口

我刚刚在我的专用服务器上安装了全新的 apache 和 ffserver。一切运行正常,我可以在 apache 提供的 flashplayer 中播放我的电影(因为我用 H264/AAC 编码了我的流)。但 flashplayer 在 ffserver 的端口(对我来说是 8090)上播放流。有些人在防火墙后面,无法播放我的直播,因为 8090 对我们来说被阻止了。我怎样才能只使用端口 80?

提前致谢,请原谅我的英语不好!

答案1

任何时候都只能有一个服务监听给定的 IP 和端口组合。

你可能有两个选择:

  1. 将端口 80 上的 ffmpeg 绑定到不同的 IP 并设置单独的主机名。
  2. 让 Apache 使用以下方式透明地重定向请求mod_proxy

答案2

考虑使用像 nginx 这样的反向代理。将 apache 移至 8080 端口,让 ffserver 位于 8090 上,并在 80 上设置 nginx。

然后将 nginx 配置为代理位置 /video 请求,例如,代理到 127.0.0.1:8090,将其他所有请求代理到 127.0.0.1:8080。会帮助你。

现在客户端仅连接 80 端口。

答案3

如前所述,设置 mod_proxy 可能是最简单的方法之一,因为您所要做的就是向 apache 添加您已经拥有的配置。

如果您想使用 mod_rewrite 对同一主机名下的特定 URL 执行此操作...例如,如果您有 www.yourhost.com 作为 apache 并且 /video 下的所有内容来自 ffserver,您可以执行以下操作:

RewriteEngine 开启

重写规则 ^/video/$1http://127.0.0.1:8900/$1 [盈亏]

ProxyPassReverse /http://127.0.0.1:8900

如果您希望将其保留在同一硬件上,但不关心它们是否解析为相同的名称,您还可以在不同的 IP 地址上设置虚拟网络接口,以便 eth0 是在 192.168.1.1 上运行的 apache,而 ffserver 是在 eth0:1 上运行的,IP 地址为 192.168.1.2。然后它们可以在 DNS 中各自拥有自己的名称,并且由于它们是不同的接口,您可以在同一个盒子上的端口 80 上运行 2 个服务。

答案4

你只能让一个应用程序监听一个给定的端口,所以很短 - 不可能同时让两个应用程序监听 80 端口。但是有办法解决这个问题,也许http://httpd.apache.org/docs/2.2/mod/mod_proxy.html会给你一些想法。基本上找到一种让 ffserver 流量通过 apache 的方法。

相关内容