Как использовать laravel-websockets с обратным прокси-сервером nginx в google app engine? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь развернуть laravel-websockets в службе движка приложения Google и не управляю ssl-сертификатами. Движок приложения "внешний интерфейс Google" будет перенаправлять только порты 80 и 443 в файл пользовательского nginx.conf, который прослушивает порт 8080. Таким образом, после развертывания нет ошибок, и журналы стекового драйвера Google показывают, что служба веб-сокетов принимает подключения, но сервис внешнего интерфейса не показывает мне ничего, ни ошибок, ни успеха. Так чего мне не хватает?

В настоящее время nginx.conf для этой службы:

daemon off;

user  root;
worker_processes  auto;
error_log /dev/stderr info;

events {
    worker_connections  4096;
}

http {
    access_log /dev/stdout;

    server {
        listen 8080;

        location / {
            proxy_pass             http://127.0.0.1:6001;
            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;
        }
    }
}

и мой файл app.yaml:

runtime: custom
env: flex

service: websockets

manual_scaling:
  instances: 1

resources:
  cpu: 2
  memory_gb: 2
  disk_size_gb: 10

runtime_config:
  document_root: public
  enable_stackdriver_integration: true

readiness_check:
  app_start_timeout_sec: 1800

env_variables:
  // all basic laravel env here plus:

  BROADCAST_DRIVER: pusher

  PUSHER_APP_ID: testing
  PUSHER_APP_KEY: testing
  PUSHER_APP_SECRET: testing

Мой конфиг пушера в файле broadcast.php:

'pusher' => [
    'driver'  => 'pusher',
    'key'     => env('PUSHER_APP_KEY'),
    'secret'  => env('PUSHER_APP_SECRET'),
    'app_id'  => env('PUSHER_APP_ID'),
    'options' => [
        'host'      => 'my-websockets-service-generated-domain.appspot.com',
        'port'      => '443',
        'scheme'    => 'https',
        'encrypted' => true
    ],
],

И, наконец, мои настройки на стороне клиента:

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

const echo = new Echo({
  authEndpoint: 'my-backend-service-generated-domain.appspot.com/broadcasting/auth',
  broadcaster: 'pusher',
  key: 'testing',
  httpHost: 'my-websockets-service-generated-domain.appspot.com',
  httpsPort: 443,
  disableStats: true,
  encrypted: true
})

Журналы стекового драйвера Google:

google stackdriver logs

1 Ответ

0 голосов
/ 24 апреля 2019

Я понял!На стороне клиента в настройках Echo мне нужно использовать wsHost и обновить wsPort и wssPort для использования 80 и 443, обратный прокси-сервер nginx проксирует его на 6001

broadcaster: 'pusher',
key: 'testing',
wsHost: 'my-websockets-service-generated-domain.appspot.com',
wsPort: 80,
wssPort: 443,
disableStats: true,
encrypted: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...