Я пытаюсь использовать реверберацию laravel (localhost), но работа завершается с ошибкой:
GuzzleHttp\Exception\RequestException: cURL error 56: Received HTTP code 503 from proxy after CONNECT (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://sockets.my-app/apps/154811/events?auth_key=ht3fidxq3ibryisgbwvs&auth_timestamp=1713439684&auth_version=1.0&body_md5=4d4063e1f80149f3f49cd0ca8f7b0e9b&auth_signature=09cc000f73028b8a2f0467bbdac413153847ad336247071a111c64f63aa2f289 in /var/www/may-app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:211
мой .env
...
REVERB_HOST = "sockets.my-app"
REVERB_PORT=443
REVERB_SCHEME=https
REVERB_SERVER_HOST=0.0.0.0
REVERB_SERVER_PORT=8080
...
вот моя конфигурация NGINX:
server {
listen 443;
listen [::]:443;
server_name sockets.my-app;
ssl on;
ssl_certificate /etc/ssl/certs/***.fr.cer;
ssl_certificate_key /etc/ssl/private/***.fr.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA;
ssl_prefer_server_ciphers on;
location / {
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://0.0.0.0:8080;
}
}
я отправляю свое событие в свой контроллер следующим образом:
CommentCreated::dispatch($comment);
поэтому я вижу, что задание не удалось:
2024-04-18 12:24:37 ***\***\app\Events\CommentCreated ................ RUNNING
2024-04-18 12:24:37 ***\***\app\Events\CommentCreated ............. 14.97ms FAIL
Есть ли у кого-нибудь представление о том, какой части мне не хватает? заранее спасибо
да, я вижу события: «pusher:subscribe», «pusher:ping», но больше ничего
Наконец я нашел решение. Выложу сюда, если это поможет.
идея состоит в том, чтобы запустить веб-сервер и реверберацию на одной машине. Я использую обратный прокси-сервер nginx в качестве посредника между пользователем и реверберацией.
.env
REVERB_HOST = "sockets.my-domain.com"
REVERB_PORT=443
REVERB_SCHEME=https
REVERB_SERVER_HOST=127.0.0.1
REVERB_SERVER_PORT=8080
REVERB_SERVER_SCHEME=http
VITE_REVERB_SERVER_HOST='${REVERB_SERVER_HOST}'
VITE_REVERB_SERVER_PORT='${REVERB_SERVER_PORT}'
VITE_REVERB_SERVER_SCHEME='${REVERB_SERVER_SCHEME}'
VITE_REVERB_APP_KEY = "${REVERB_APP_KEY}"
VITE_REVERB_HOST = "${REVERB_HOST}"
VITE_REVERB_PORT = "${REVERB_PORT}"
VITE_REVERB_SCHEME = "${REVERB_SCHEME}"
ресурсы/js/echo.js
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'reverb',
key: import.meta.env.VITE_REVERB_APP_KEY,
wsHost: import.meta.env.VITE_REVERB_HOST,
wsPort: import.meta.env.VITE_REVERB_PORT ?? 80,
wssPort: import.meta.env.VITE_REVERB_PORT ?? 443,
forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https',
enabledTransports: ['ws', 'wss'],
});
конфигурация/трансляция
'reverb' => [
'driver' => 'reverb',
'key' => env('REVERB_APP_KEY'),
'secret' => env('REVERB_APP_SECRET'),
'app_id' => env('REVERB_APP_ID'),
'options' => [
'host' => env('REVERB_SERVER_HOST'),
'port' => env('REVERB_SERVER_PORT', 443),
'scheme' => env('REVERB_SERVER_SCHEME', 'https'),
'useTLS' => env('REVERB_SERVER_SCHEME', 'https') === 'https',
],
'client_options' => [
'verify' => false,
],
конфигурация/реверберация
'apps' => [
[
'key' => env('REVERB_APP_KEY'),
'secret' => env('REVERB_APP_SECRET'),
'app_id' => env('REVERB_APP_ID'),
'options' => [
'host' => env('REVERB_SERVER_HOST'),
'port' => env('REVERB_SERVER_PORT', 443),
'scheme' => env('REVERB_SERVER_SCHEME', 'https'),
'useTLS' => env('REVERB_SERVER_SCHEME', 'https') === 'https',
],
'allowed_origins' => ['*'],
'ping_interval' => env('REVERB_APP_PING_INTERVAL', 60),
'max_message_size' => env('REVERB_APP_MAX_MESSAGE_SIZE', 10_000),
],
конф NGINX
server {
listen 443;
listen [::]:443;
server_name sockets.my-domain.com;
ssl on;
ssl_certificate /etc/ssl/certs/****.fr.cer;
ssl_certificate_key /etc/ssl/private/****.fr.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA;
ssl_prefer_server_ciphers on;
location / {
proxy_http_version 1.1;
#proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://0.0.0.0:8080;
}
}
это работает очень хорошо
Вы можете запустить Reverb в режиме отладки, чтобы увидеть дополнительную информацию об ошибке
php artisan reverb:start --debug