gpt4 book ai didi

php - 远程 Ratchet 连接

转载 作者:行者123 更新时间:2023-12-04 16:13:46 24 4
gpt4 key购买 nike

所以我一直在尝试设置 Ratchet 一段时间。并遇到了另一个障碍。我遵循了本教程 http://socketo.me/docs/hello-world一切似乎都在本地机器上运行。但是,当我尝试从远程机器访问它们以进行测试时,我不能。在帮助和故障排除部分下,它声明将聊天服务器程序绑定(bind)到 0.0.0.0,但我这样做无济于事。目前我在端口 9680 上运行它,因为系统上正在使用 80 和 8080。 (正在运行 apache 服务器)关于如何解决此连接问题的任何帮助或建议将不胜感激,因为在我可以远程访问 Websockets 之前,我无法继续我的项目。我对服务器管理相当陌生,所以我对如何设置它的了解相当少。提前致谢!

最佳答案

您实际上不应该在生产中将 WebSocket 服务器绑定(bind)到 0.0.0.0。在服务器的上下文中,0.0.0.0 表示“本地机器上的所有 IPv4 地址”。因此,假设您的服务器的公共(public) IP 地址为 1.1.1.1,本地/私有(private) IP 地址为 192.168.0.1,那么这意味着可以从两个 IP 访问绑定(bind)到 0.0.0.0 的应用程序(至少可以路由到那些地址)。通常,在生产设置中,这不是您想要的。通常,您希望绑定(bind)到特定网络接口(interface)上的特定 IP 地址,因为您确切地知道您的主机将监听​​什么。
需要注意的常见问题
您要注意的另一个问题是,绑定(bind)到公共(public)接口(interface)通常需要 root 权限。在没有提升权限的情况下尝试这样做通常会导致打开 TCP 套接字时出错。还有地址已被使用 问题,这可以通过确保您拥有 SO_REUSEADDR 来解决在 socketopt 上设置(不过,我相当确定 Ratchet 默认情况下会为您执行此操作)。此外,如果您正在运行 SELinux,则总是有可能您的政策不允许监听该端口。然后是防火墙网络配置问题,防火墙或网络硬件的某些部分阻止了端口。
Ratchet 和 Apache 通过同一端口
拥有 Multi-Tenancy 服务器的另一个缺点是,如果您想同时为来自 Apache httpd 网络服务器和 PHP WebSocket 服务器的 HTTP 流量提供服务,则不能在没有在他们面前放置一个反向代理。其实这就是Ratchet recommends for production在他们的文档中。
一般的想法是有一个 reverse proxy like HAProxy ,绑定(bind)到在端口 80/443 上监听的公共(public) IP,然后将其配置为将特定流量路由到您的 PHP WebSocket 服务器(它可能会监听本地环回或本地网络接口(interface))或您的 Apache httpd 网络服务器,具体取决于说例如,一组特定的路由或一些 cookie。

关于php - 远程 Ratchet 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com