sql >> Databasteknik >  >> NoSQL >> Redis

Konfigurera Apache Reverse Proxy för att vara värd för Laravel Echo Server vid produktion

Äntligen fattade det.

Även om min webbplats fortfarande måste ha en SSL, är lösningen att skaffa Apache för att omdirigera /socket.io till http://localhost:6001/socket.io redan konfigurerad för redis . Använd sedan 2.2.3 version av socket io .

Så min laravel-echo-server.json är inte konfigurerad för SSL.

Här är min 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"
}

}

Hur jag använder laravel-echo-server.json:

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,
  });

}

Och min apaxhe-konfiguration inom min SSL virtualhost för min domän:

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 

Dessutom skulle det krävas en Node js process manager för att behålla laravel-echo-server löpning. Så jag skapade echo-server.json och placerade följande kod.

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

Därefter installerar jag pm2 processledare. npm install pm2 -g och startade min tjänst pm2 start echo-server.json --name="apps" .

Slutligen använder jag pm2 list för att se alla mina tjänster och pm2 startup för att hålla mina tjänster igång.




  1. Cloudera Impala:Realtidsfrågor i Apache Hadoop, på riktigt

  2. Ordbok<sträng, objekt>-till-BsonDokumentkonvertering som utelämnar _t-fält

  3. Hög tillgänglighet (Multi-AZ) för CDP Operational Database

  4. Är det dåligt att ändra _id-typ i MongoDB till heltal?