首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel-websockets在使用plesk到nginx的VPS服务器上不起作用

Laravel-websockets在使用plesk到nginx的VPS服务器上不起作用
EN

Stack Overflow用户
提问于 2021-04-26 17:25:40
回答 1查看 381关注 0票数 0

我正在使用laravel-websockets和pusher包在我的应用程序中运行一个简单的聊天功能。我设法使用valet dev环境的ssl证书使其在本地工作。现在,我正处于开发的最后阶段,我将我的应用程序放在我的VPS服务器上,创建了ssl证书,一切都工作得很好,但我无法让websockets服务器工作。我使用的是带有plesk的ubuntu服务器,我通过nginx运行我的应用程序。Currently Getting this error in the console

broadcasting.php

代码语言:javascript
复制
 'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
            'cluster' => env('PUSHER_APP_CLUSTER'),
            'useTLS' => true,
            'encrypted' => true,
            'host' => '127.0.0.1',
            'port' => 6001,
            'scheme' => 'https',
            'curl_options' => [
                CURLOPT_SSL_VERIFYHOST => 0,
                CURLOPT_SSL_VERIFYPEER => 0,
            ]
        ],
    ],

bootstrap.js

代码语言:javascript
复制
import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
  broadcaster: 'pusher',
  wsHost: window.location.hostname,
  wsPort: 6001,
  wssPort: 6001,
  key: process.env.MIX_PUSHER_APP_KEY,
  cluster: process.env.MIX_PUSHER_APP_CLUSTER,
  disableStats: true,
  forceTLS: true
});

.env (我将在生产环境中更改pusher凭证)

代码语言:javascript
复制
PUSHER_APP_ID=12345
PUSHER_APP_KEY=ABCDEFG
PUSHER_APP_SECRET=HIJKLMNOP
PUSHER_APP_CLUSTER=mt1

LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT=localhost.crt
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK=localhost.key

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
EN

回答 1

Stack Overflow用户

发布于 2021-04-26 17:50:43

根据我的经验,我在使用Plesk和Nginx+Apache时也遇到过类似的问题。经过大量的研究和测试,我找到了这个解决方案,即在prod env中工作:

登录plesk并打开您的域名配置> Apache和Nginx设置> HTTPS的其他设置

(可能不同,因为我的服务器语言不是英语。)

在该框中放入:

代码语言:javascript
复制
# When Upgrade:websocket header is present, redirect to ws
# Using NC flag (case-insensitive) as some browsers will pass Websocket
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/chat_ws/(.*)    ws://<your_domain>:6001 [P,L]

之后,您必须使用http:///chat_ws/作为聊天websocket服务器端点(在javascript中)

在我的例子中工作正常,根据我的记忆: nginx将反向代理请求,而https上的websocket不被直接允许

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67264028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档