本地(dockerized)中的混响无法解决的问题

问题描述 投票:0回答:1

我正在尝试(!)在我的本地设置中使用 laravel reverb (dockerized php-fpm nginx mysql ) 但无论我不断获得什么端口或主机

WebSocket connection to 'ws://127.0.0.1:8070/app/02f265e93304b96ba8d8?protocol=7&client=js&version=8.3.0&flash=false' failed: 
这让我很烦恼,因为我非常确定环境变量并尝试了一切...... 根据我目前的情况,您可以做出以下一些假设: 1- Ran reverb:start 在 php-fpm 容器内(我不确定这是最好的方法) 2-将环境变量设置为正确的值 3-根本没有设置ssl证书。 4-已经有 echo.js 推送器和广播设置。

感谢任何想法。

laravel nginx laravel-reverb
1个回答
0
投票

检查端口 (8070) 是否在您的 Docker 配置 (docker-compose.yml) 中公开并映射到主机。您可能需要类似的东西: 服务-->php-fpm-->端口-->8070:8070

使用 localhost 而不是 127.0.0.1 进行 WebSocket 连接,因为容器内的 127.0.0.1 指的是容器本身。

如果未正确映射到外部服务,或者 WebSocket 服务器尝试绑定到 127.0.0.1,则在 PHP-FPM 容器内运行 reverb:start 可能会导致问题。 考虑在容器外运行 Reverb,或检查容器日志以确保不存在权限问题。

NGINX 反向代理配置

location /app/ {
    proxy_pass http://127.0.0.1:8070;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

虽然您没有使用 SSL,但值得注意的是,现代浏览器可能会阻止不安全的 WebSocket 连接,尤其是在生产环境中。当您转向生产时请考虑设置 SSL 以避免此类问题。

PHP-FPM 通常不直接服务 WebSocket 请求。确保 PHP-FPM 不会干扰 WebSocket 服务器,并在可能的情况下考虑独立运行 WebSocket 服务器。

© www.soinside.com 2019 - 2024. All rights reserved.