Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

466
Vistas
Habilitar Cloudflare en mi servidor web Node.js/Express/Socket.io lo rompe. ¿Cómo depurar?

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

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda