socket node node.js ssl nginx socket.io reverse-proxy

node.js - node - Nginx Socket.io SSL dando io no es un error definido



nginx websocket server (1)

Estoy tratando de establecer comunicación con el servidor cliente usando socket.io en un servidor con https y proxy inverso como nginx.Pero en el lado del cliente está dando los siguientes errores:

1) GET https://example.com/socket.io/socket.io.js 404 no encontrado

2) Error de referencia: io no está definido

Este es mi bloque de servidor nginx

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name example.com www.example.com; location / { proxy_pass http://127.0.0.1:8080; 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; try_files $uri $uri/ =404; } listen 443 ssl; ssl_certificate /etc/letsencrypt/live/myreactnative.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myreactnative.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; if ($scheme != "https") { return 301 https://$host$request_uri; } }

Este es mi archivo de servidor de nodo

var express = require(''express''); var app = express(); var serverPort = 8080; var http = require(''http''); var server = http.createServer(app); var io = require(''socket.io'')(server); app.get(''/'', function(req, res){ console.log(''get /''); res.sendFile(__dirname + ''/index.html''); }); server.listen(serverPort, function(){ console.log(''server up and running at %s port'', serverPort); }); io.on(''connection'', function(socket){ console.log(''connection''); socket.on(''disconnect'', function(){ console.log(''disconnect''); }) })

mi lado del cliente es así:

<html> <head> <title>socket client</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> </body> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript"> var socket = io(); </script> </html>

Esta es la URL del sitio web https://example.com

mi aplicación de nodo está en el directorio / usr / share / nginx / html y no en la raíz (pero no creo que esto pueda hacer ninguna diferencia)


Finalmente fue arreglado. Realicé cambios en el bloque de servidor nginx.

Este es mi nuevo bloque de servidor nginx

server { listen 80; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name example.com www.example.com; location / { proxy_pass http://127.0.0.1:8080; 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; ssl_certificate /etc/letsencrypt/live/myreactnative.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myreactnative.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; if ($scheme != "https") { return 301 https://$host$request_uri; } }