Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Konfigurieren von Apache Reverse Proxy zum Hosten von Laravel Echo Server in der Produktion

Endlich verstanden.

Während meine Website immer noch ein SSL tragen muss, ist die Lösung, Apache zu bekommen um /socket.io umzuleiten zu http://localhost:6001/socket.io bereits für redis konfiguriert . Verwenden Sie dann 2.2.3 Version von socket io .

Also meine laravel-echo-server.json ist nicht für SSL konfiguriert.

Hier ist meine laravel-echo-server.json :

{
   "authHost": "https://domainName.com",
   "authEndpoint": "/broadcasting/auth",
   "clients": [
      {
        "appId": "xxxxxxx",
        "key": "xxxxxxxxxxx"
      }
   ],
   "database": "redis",
   "databaseConfig": {
      "redis": {},
      "sqlite": {
          "databasePath": "/database/laravel-echo-server.sqlite"
      }
   },
   "devMode": false,
   "host": null,
   "port": "6001",
   "protocol": "http",
   "socketio": {},
   "sslCertPath": "",
   "sslKeyPath": "",
   "sslCertChainPath": "",
   "sslPassphrase": "",
   "subscribers": {
       "http": true,
       "redis": true
   },
   "apiOriginAllow": {
   "allowCors": true,
   "allowOrigin": "*",
   "allowMethods": "GET, POST",
   "allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}

}

Wie ich laravel-echo-server.json verwende:

import Echo from "laravel-echo";
window.io = require('socket.io-client');
// Have this in case you stop running your laravel echo server
if (typeof io !== 'undefined') {
  window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname,
  });

}

Und meine apaxhe-Konfiguration in meinem SSL virtualhost für meine Domain:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
RewriteCond %{QUERY_STRING} transport=websocket    [NC]
RewriteRule /(.*)           ws://localhost:6001/$1 [P,L]

ProxyPass        /socket.io http://localhost:6001/socket.io
ProxyPassReverse /socket.io http://localhost:6001/socket.io 

Außerdem wäre ein Node js-Prozessmanager erforderlich, um den laravel-echo-server zu verwalten Betrieb. Also habe ich echo-server.json erstellt und den folgenden Code platziert.

{
  "name": "apps",
  "script": "laravel-echo-server",
  "args": "start"
}

Als nächstes installiere ich pm2 Prozessmanager. npm install pm2 -g und startete meinen Dienst pm2 start echo-server.json --name="apps" .

Zuletzt verwende ich pm2 list um alle meine Dienste und den pm2 startup anzuzeigen um meine Dienste am Laufen zu halten.