Apache 端口 8080 未监听 - 可能是防火墙问题

Apache 端口 8080 未监听 - 可能是防火墙问题

我正在使用 Ubuntu 14.04 和 apache 运行 EC2 服务器,并且我有一个使用 CakePHP 的 Ratchet websocket 插件的应用程序。我在本地主机上运行良好,我想在服务器上测试该应用程序。当我通过 SSH 进入我的服务器并启动 shell 脚本时,它运行良好。但是,当我实际转到使用 websocket 连接的页面时,在 chrome 上的网络选项卡中它显示 websocket(待处理),然后它失败并出现以下错误

WebSocket 连接‘ws://my.ip.address:8080/websocket’失败:建立连接时出错:net::ERR_CONNECTION_TIMED_OUT

我使用telnet my.server.ip.address 80并成功连接。我也能连接到端口 22,但由于“协议不匹配”,它立即被踢出。我尝试了同样的事情,但在端口 8080 上,出现了连接超时。

我可以通过 ssh 连接到我的服务器并使用telnet 127.0.0.1 8080。我无法从外部计算机执行此操作,只能从 SSH 连接的本地地址执行此操作。我使用了sudo tcpdump -i any port 8080一个通过 SSH 连接的单独终端,并显示了我的 telnet 连接的流量。因此,我相信端口 8080 是开放的,我可以从内部连接,但无论 UFW 显示什么,到端口 8080 的所有外部流量似乎都被阻止了。

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

当我使用nmap -p 8080 my.server.ip.address它时,它显示状态为已过滤。当我对端口 80 执行相同操作时,它显示状态为打开。

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

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

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

在我的本地机器(websocket 在其上运行)上,我打开了另一个终端,并用它sudo tcpdump -i any port 8080来监控实时流量。我打开了网络浏览器,果然,通过 websocket 的所有流量都被捕获了。我在我的服务器上做了同样的事情,没有显示任何活动。

经过一番寻找,我找到了一个人在 Ratchet 插件 github 问题页面上似乎也有类似的问题。插件的创建者回复了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)

答案1

答案2

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

相关内容