我现在正尝试将我的 Rails 应用程序部署到 Ubuntu Server 11.04 上的 Torquebox 2.0.3。现在它已正确部署,我可以在端口 8080 上访问该应用程序。但我无法配置服务器以监听端口 80。
我尝试设置要监听的端口$TORQUEBOX_HOME/jboss/standalone/configuration/standalone.xml
:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
....
<socket-binding name="http" port="80"/>
....
</socket-binding-group>
此后,当我通过调用启动 Torquebox 时torquebox run
,出现以下错误:
15:47:07,804 ERROR [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Error initializing endpoint: java.net.BindException: Permission denied /127.0.0.1:80
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:983) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:190) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.Connector.init(Connector.java:983) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.WebConnectorService.start(WebConnectorService.java:267) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControlle
rImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.6.0_23]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Thread
PoolExecutor.java:603) [rt.jar:1.6.0_23]
at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_23]
但我发现没有进程占用端口 80:
$ sudo lsof -i :80
$ sudo netstat -tulpn | grep :80
$
我该如何解决这个问题并配置 jboss 服务器来监听端口 80?
答案1
较低编号的端口 - 低于 1024 的端口往往仅限于 root 用户使用 - 解决这个问题的最好/最简单的方法是在 iptables 或网络防火墙内部将端口 80 转发到 8080,而不是在应用程序级别。