Apache端口8080不听 – 可能的防火墙问题

我正在运行Ubuntu 14.04&apache的EC2服务器,我有一个应用程序,它使用了CakePHP的Ratchet websocket插件。 我有这个在localhost上正常工作,我想在服务器上testing应用程序。 当我SSH到我的服务器,并启动shell脚本它运行良好。 但是,当我真正去使用websocket连接的页面,在chrome的networking选项卡上显示websocket(挂起),然后失败,并出现以下错误

WebSocket连接到'ws://my.ip.address:8080 / websocket'失败:连接build立时出错:net :: ERR_CONNECTION_TIMED_OUT

我使用了telnet my.server.ip.address 80并成功连接。 我也能够连接到端口22,但由于“协议不匹配”而启动。 我尝试了同样的事情,但在端口8080,并得到连接超时。

我能通过ssh'ing连接到端口8080到我的服务器,并使用telnet 127.0.0.1 8080 。 我不能从外部计算机执行此操作,只能从SSH连接的本地地址执行此操作。 我使用sudo tcpdump -i any port 8080在我通过SSH连接的separteterminal中的sudo tcpdump -i any port 8080 ,并显示了我的telnet连接的stream量。 所以,我相信端口8080是开放的,我可以从内部连接,但不pipeUFW显示什么,到端口8080的所有外部stream量似乎都被阻塞了。

当在本地主机上开发时,如果我忘记启用WebSocket服务器,我会得到相同的连接超时错误。

当我使用nmap -p 8080 my.server.ip.address它显示状态为已过滤。 当我为80端口做同样的事情时,它显示状态是开放的。

在我的服务器上,我启动了websocket,然后在terminal上使用了netstat -ntlp | grep LISTEN netstat -ntlp | grep LISTEN确实显示端口8080正在监听。

 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 3532/php 

当我停止websocket并再次运行netstat命令时,它就会消失

在我的本地机器(websocket工作),我打开另一个terminal,并使用sudo tcpdump -i any port 8080监视实时stream量。 我打开了我的网页浏览器,果然,所有通过websocket的stream量都被捕获了。 我在我的服务器上做了同样的事情,并没有显示任何活动。

经过一番search,我发现棘轮插件github问题页面上的人似乎有一个类似的问题。 插件的创build者回复了Hey, regarding your first comment is that if you pass it through a webserver you have to set it up to proxy the websocket connections to Ratchet. ,但我不太清楚这意味着什么。 这是参考一个端口听,还是这意味着别的?

这是我的UFW状态

 To Action From -- ------ ---- 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 8080/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 2222/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 8080/tcp (v6) ALLOW Anywhere (v6) 

看看下面的内容:

  • 适用于Linux实例的Amazon EC2安全组 – Amazon Elastic Compute Cloud
  • VPC的安全组 – Amazon Virtual Private Cloud

您的端口未在您的EC2安全组中打开。 检查您的ec2控制台以打开与服务器绑定的安全组的端口。