在端口 80 上运行 red5

在端口 80 上运行 red5

我有一个 red5 应用程序http://code.google.com/p/openmeetings在 red5 下运行,可通过端口 5080 和 8443 访问

我已经在 Ubuntu 10.04 上安装了它

最终的目标是通过 443 而不是 8443 上的 https 来访问它,但我认为我最初会在 80 上尝试,这样任何问题都只归结为端口配置而不是 SSL 证书。

我尝试在 red5.properties 文件中将端口从 5080 更改为 80,但无法启动。

在red5.log中我看到

错误 oacoyote.http11.Http11Protocol - 初始化端点错误 java.net.BindException:权限被拒绝 /0.0.0.0:80

在error.log中我看到

错误 oacoyote.http11.Http11Protocol - 初始化端点错误 java.net.BindException:权限被拒绝 /0.0.0.0:80

错误 org.red5.server.tomcat.TomcatLoader - 加载 tomcat 时出错,无法绑定连接器。您可能没有权限使用所选端口 org.apache.catalina.LifecycleException:协议处理程序初始化失败:java.net.BindException:权限被拒绝 /0.0.0.0:80

端口 80 上没有安装或运行任何其他程序,因此我推测这是一种“需要 root 权限”的情况。我宁愿不以 root 权限运行可通过 Internet 访问的 Web 服务。

我知道 Tomcat 可以通过将 /etc/default/tomcat6 中的“#AUTHBIND=no”更改为“AUTHBIND=yes”来在端口 80 上运行,但我无法找到适用于 red5 的类似内容。

我是否在躲避什么,或者有没有比以 root 身份运行更好的方法?

谢谢!

答案1

作为普通用户,您无法在 Linux 上以 <1024 的端口上运行任何内容。检查这个问题:

以及相关答案。

答案2

据我所知,red5 没有提供绑定特权端口然后将 root 权限释放回普通用户帐户,就像许多其他守护进程(例如 Apache、tomcat 等)一样。

因此,虽然您可以以 root 身份运行它并绑定到端口 80,但它仍将以 root 身份运行,并且非常不安全。

要解决此问题,请使用某种端口转发。例如,xinetd 内置有端口转发功能,因此如果您已经将其用于其他用途,则可以设置一个简单的端口转发:

service yourservicename
{
        disable         = no
        type            = UNLISTED
        socket_type     = stream
        protocol        = tcp
        user            = nobody
        wait            = no
        redirect        = 127.0.0.1 5080
        port            = 80
}

答案3

我知道这不是您想要的,但也许使用 apache 或 nginx 作为应用程序的反向代理可能会效果很好。

相关内容