0

I am trying to setup laravel websocket on aws hosting (ubuntu based) with SSL

When I go to page laravel-websockets and press connect it waits few seconds and then show me warning in console: WebSocket connection to 'wss://socket.mydomain.com:6001/app/workspace?protocol=7&client=js&version=4.3.1&flash=false' failed: WebSocket is closed before the connection is established.

It works fine on my localhost without HTTPS, but when I try setup it on my server it doesn't work.

My .env file

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=workspace
PUSHER_APP_KEY=workspace
PUSHER_APP_SECRET=workspace
PUSHER_APP_CLUSTER=mt1
LARAVEL_WEBSOCKETS_HOST=socket.mydomain.com
LARAVEL_WEBSOCKETS_PORT=6001 // here I tried 433 and 6001
LARAVEL_WEBSOCKETS_HTTPS=1
LARAVEL_WEBSOCKETS_ENABLE_STATISTICS=false
LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT=/etc/letsencrypt/live/socket.mydomain.com/fullchain.pem
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK=/etc/letsencrypt/live/socket.mydomain.com/privkey.pem

config/websockets.php

'dashboard' => [
        'host' => env('LARAVEL_WEBSOCKETS_HOST'),
        'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001)
    ],
    'apps' => [
        [
            'host' => env('LARAVEL_WEBSOCKETS_HOST'),
            'port' => env('LARAVEL_WEBSOCKETS_PORT'),
            'id' => env('PUSHER_APP_ID'),
            'name' => env('APP_NAME'),
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'path' => env('PUSHER_APP_PATH'),
            'capacity' => null,
            'enable_client_messages' => false,
            'enable_statistics' => env('LARAVEL_WEBSOCKETS_ENABLE_STATISTICS', true),
            'encrypted' => true
        ],
    ],
     'ssl' => [
        'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),
        'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),
        'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),
        'verify_peer' => false,
        'verify_peer_name' => false
    ],

config/broadcasting.php

'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'),
                'host' => env('LARAVEL_WEBSOCKETS_HOST'),
                'port' => env('LARAVEL_WEBSOCKETS_PORT'),
                'useTLS' => true,
        'encrypted' => true,
                'scheme' => 'https', // env('LARAVEL_WEBSOCKETS_HTTPS') ? 'https' : 'http',
                'curl_options' => [
                    CURLOPT_SSL_VERIFYHOST => 0,
                    CURLOPT_SSL_VERIFYPEER => 0
                ]
            ],
        ],

and my nginx configuration for subdomain

server {
  server_name socket.mydomain.com;

  location / {
    proxy_pass             http://127.0.0.1:6001;
    #proxy_pass https://dev-api.alsoworkspace.com;
    proxy_read_timeout     60;
    proxy_connect_timeout  60;
    proxy_redirect         off;

    # Allow the use of websockets
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/socket.mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/socket.mydomain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = socket.mydomain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;

  server_name socket.mydomain.com;
    return 404; # managed by Certbot
}

Supervisor config:

[program:websockets]
command=/usr/bin/php /var/www/backend/artisan websockets:serve
numprocs=1
autostart=true
autorestart=true
user=ubuntu
redirect_stderr=true

Can anyone help please? I spent whole day and didn't find why it doesn't work

0 Answers0