【发布时间】:2021-12-27 01:45:17
【问题描述】:
我正在开发一个 Ruby on Rails 应用程序,该应用程序使用 gem Private Pub (https://github.com/ryanb/private_pub) 来提供实时聊天消息功能
此应用程序托管在 Digital Ocean 中,并且聊天消息已经正常工作了很长时间。但是,大约 1 个半月前,它停止工作,我在控制台上收到一条错误消息:GET https://fake-url.com:9292/faye/faye.js net::ERR_CONNECTION_REFUSED
我做的第一件事是使用以下命令重新启动 Faye 服务器: bundle exec thin -C /data/app/shared/config/private_pub_thin.yml -d -P /data/app/shared/tmp/pids/faye .pid --ssl-disable-verify start(我通过 Capistrano 运行此命令)
运行该命令后,我检查了 /data/app/shared/tmp/pids 文件夹并确认 faye.pid 在那里,因此进程似乎正在运行
然后我运行 sudo lsof -i -P -n | grep LISTEN 检查开放端口并列出 9292 端口
之后我重新加载聊天并再次收到 net::ERR_CONNECTION_REFUSED 错误
然后我再次检查端口,端口 9292 没有出现在列表中
所以似乎每次我加载页面时它都会关闭端口或类似的东西。
注意事项:
- ufw 未启用
- 我们有一个登台服务器,我们遇到了同样的问题。仅有的 不同的是,在暂存端口 9292 总是出现在列表中 开放端口。但是,它会抛出 net::ERR_CONNECTION_REFUSED
- 我认为这个错误是在旧的 Let's Encrypt Root 之后开始发生的 证书过期 (https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021) 我对此不是 100% 确定,但我遇到了其他相关的问题 这个,我想知道这个错误是否与那个有关
- 在本地运行良好
提前致谢!
【问题讨论】:
-
从这里很难判断 - 它似乎与在 Digital Ocean 中如何配置/部署事物有关。您可以使用 curl 测试到 fake-url.com:9292/faye/faye.js 的连接/请求吗?您可以尝试 curl(远程使用完整域),然后可能是相同的 curl 请求,但在本地执行它,即在托管您的 faye 的机器上执行它。
-
部分用户无法连接到9292端口。我记得在 2013 年遇到过同样的问题 :)。你晚了8年。您需要配置 nginx 以将来自 yoursite.com/faye 的请求路由到 127.0.0.1:9292/faye,就像这个用户在这里:stackoverflow.com/questions/37855326/…
-
draganstankovic 非常感谢您的回答!我从远程服务器和本地服务器测试了 curl 的连接,我得到了同样的错误:连接被拒绝。你还有什么想法吗?
-
razvans 感谢您的回答!我在我的 private_pub.yml 文件中将端口更改为 8080,就像您共享链接中的那个人所做的那样,我仍然收到错误消息。与端口 8080 的唯一区别是它会在 javascript 控制台中引发超时错误。但是,如果我使用来自远程服务器的 curl 对其进行测试,它会引发相同的连接被拒绝错误。问题是我没有更改服务器上的任何内容。它突然停止工作,这很奇怪。你还有什么想法吗?
-
draganstankovic 我进行了更多测试,发现它只接受来自本地主机的连接:TCP 127.0.0.1:9292 (LISTEN)。如果我从远程服务器运行
telnet localhost 9292,它可以工作,但如果从我的计算机运行telnet remote_ip 9292,我会收到连接被拒绝错误。我遇到了同样的问题:digitalocean.com/community/questions/…。你知道如何让它监听外部连接吗?
标签: ruby-on-rails tcp faye connection-refused private-pub