Estoy desarrollando un servidor web node.js que ejecuta express/express-session/passport para autenticación y socket.io para websockets. El servidor web en sí tiene un proxy inverso con Nginx.
Todo parece funcionar bien y el servidor puede capturar correctamente la información de los clientes, pero cuando hago un proxy del sitio detrás de Cloudflare, se atasca en la página de autenticación.
app.get('/', function (req, res) { //successfully authenticated if (req.session && req.session.passport && req.session.passport.user) { res.sendFile('index.html', { root: 'client/html' }); console.log('Index Served'); } //request authentication else { res.sendFile('auth.html', { root: 'client/html' }); console.log('Auth Served'); }; });Sin embargo, obtengo "Índice servido" en la consola, por lo que la autenticación parece funcionar bien detrás de Cloudflare. Incluso puedo ver la información de los jugadores en la consola. Simplemente no veo index.html: solo obtengo auth.html aunque "Índice servido" se envía a la consola, ¿entonces tal vez sea un problema expreso?
Tengo ambos app.set('trust proxy', true); y el proxy establecido en verdadero en los parámetros de la sesión.
Lo siguiente no parece ejecutarse cuando hago proxy del servidor, ya que solo veo los siguientes registros de la consola cuando no lo tengo proxy:
//dependency: websocket var io = require('socket.io')(server); io.use(function(socket, next){ console.log('1 ' + socket); socket.client.request.originalUrl = socket.client.request.url; cookieParse(socket.client.request, socket.client.request.res, next); }); io.use(function(socket, next){ console.log('2 ' + socket); socket.client.request.originalUrl = socket.client.request.url; sessionAuthentication(socket.client.request, socket.client.request.res, next); }); io.use(function(socket, next){ console.log('3 ' + socket); passportInit(socket.client.request, socket.client.request.res, next); }); io.use(function(socket, next){ console.log('4 ' + socket); passportSession(socket.client.request, socket.client.request.res, next); });Tengo el servidor web ejecutándose en el puerto 2052, que según Cloudflare es un puerto adecuado para websockets: https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/
Realmente no tengo una buena idea de lo que está pasando, así que quiero saber qué puedo hacer para depurarlo. Revisé los registros de acceso y error de Nginx y no obtuve nada útil. ¿Hay alguna manera de depurar socket.io de alguna manera o tal vez una sesión rápida?
El archivo server.js completo se puede ver aquí: https://github.com/Dan-Mizu/Project-Virtual-Pond/blob/update/server/Server.js