Я был в течение 3 дней на этом, и пришло время отозвать это, я не могу решить это, и моя поддержка сервера отказывается помочь мне далее, потому что они не специализируются на веб-сокетах. С помощью WS это работает, но на WSS (https) это не так.
Я использую Apache / 2.4.41 (cPanel)
Я установил 3 модуля php из cpanel: -mod_proxy -mod_proxy_wstunnel -mod_proxy_http
В моем файле https.conf есть внешний файл настроек, в который я могу добавить некоторый код (чтобы я не мог редактировать файл main.conf).
Я добавил это:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
RewriteEngine on
ProxyRequests off
ProxyPreserveHost on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "ws://mywebsite.com:6001/$1" [P,L]
ProxyPass /app ws://mywebsite.com:6001
ProxyPassReverse /app wss://mywebsite.com:6001
Перезагрузил httpd и попытался подключиться через панель веб-сокетов Laravel. Я также следил за настройкой здесь: https://docs.beyondco.de/laravel-websockets/1.0/basic-usage/ssl.html#configuration
As:
'ssl' => [
/*
* Path to local certificate file on filesystem. It must be a PEM encoded file which
* contains your certificate and private key. It can optionally contain the
* certificate chain of issuers. The private key also may be contained
* in a separate file specified by local_pk.
*/
'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),
/*
* Path to local private key file on filesystem in case of separate files for
* certificate (local_cert) and private key.
*/
'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),
/*
* Passphrase for your local_cert file.
*/
'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),
'verify_peer' => false,
],
.env файл в Laravel:
LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT=/home/account/public_html/ssl/mywebsite_com_a25e6_65c3b_1577536339_5996f634be6fba7d72a3bcf7b.crt
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK=/home/account/public_html/ssl/a25e6_65c3b_cc885c0c620bd3119e79f1fd.key
При нажатии на кнопку подключенияна приборной панели веб-сокета laravel, я получаю эту ошибку:
pusher.min.js:8 WebSocket connection to 'wss://mywebsite.com:6001/app/mnbmndbf090980df9s0d980098fskjh?protocol=7&client=js&version=4.3.1&flash=false' failed: WebSocket opening handshake was canceled
У меня больше ничего нет в моих журналах.
Может кто-нибудь сказать мне, если мои настройки httpd верны?
Спасибо.