我有一个 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
答案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 作为应用程序的反向代理可能会效果很好。