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