https using node/express throw ERR_EMPTY_RESPONSE

He estado tratando de averiguar esto por un tiempo, pero no puedo encontrar nada que ayude. Mi código de servidor es bastante simple

const path = require('path');
const https = require('https');
const http = require('http');
const fs = require('fs');
const express = require('express');
const socketio = require('socket.io');
const e = require('express');
const { isObject } = require('util');
const { fstat } = require('fs');

var options = {
    cert: fs.readFileSync('./cert.pem'),
    key: fs.readFileSync('./privkey.pem'),
};

const app = express();
const server = https.createServer(options, app);
const io = socketio(server);

// Set static folder
app.use(express.static('public', { dotfiles: 'allow'}));

//app.use('/', express.static(('public', { dotfiles: 'allow'})));

const PORT = process.env.PORT || 80;

server.listen(PORT, "0.0.0.0", () => console.log(`Server running on port ${PORT}`));

Usé certbot para el ssl, pero cuando voy a mi dominio (trabaja si cambio a http) lanza ERR_EMPTY_RESPONSE. ¿Alguna idea de por qué está pasando esto? Gracias por adelantado.

Pregunta hecha hace 3 años, 4 meses, 28 días - Por algorithmadept


2 Respuestas:

  • El error ERREMPTYRESPONSE puede ocurrir por diversas razones al configurar un servidor HTTPS con Node.js y Express. Al revisar tu código, parece que la configuración del servidor HTTPS está correctamente implementada. Sin embargo, aquí hay algunas sugerencias que podrían ayudarte a resolver el problema:

    • Verificar que los certificados SSL sean válidos: Asegúrate de que los archivos cert.pem y privkey.pem sean los certificados SSL correctos y que estén ubicados en la misma carpeta que tu aplicación.
    • Comprobar que el puerto 443 esté disponible: El puerto estándar para HTTPS es el 443. Asegúrate de que este puerto esté disponible en tu sistema y no esté siendo utilizado por otro servicio.
    • Revisar el firewall: Comprueba si tu firewall está bloqueando las conexiones HTTPS en el puerto 443. De ser así, tendrás que configurar correctamente el firewall para permitir el tráfico HTTPS.
    • Verificar la configuración del dominio: Asegúrate de que el dominio esté apuntando correctamente a tu servidor y que esté configurado para aceptar conexiones HTTPS.
    • Revisar los logs del servidor: Verifica los logs de tu servidor para obtener más información sobre el error específico que está causando la respuesta vacía (ERR_EMPTY_RESPONSE).

    Si después de revisar estos puntos sigues experimentando el error ERREMPTYRESPONSE, te recomendaría investigar más a fondo en los logs de tu servidor y buscar posibles problemas de configuración o errores en tu aplicación. También puedes intentar probar tu configuración en un entorno local para descartar cualquier problema relacionado con el servidor de producción.

    Respondida el Dec 19, 2020 a las 03:28 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error ERR_EMPTY_RESPONSE generalmente ocurre cuando el servidor no devuelve una respuesta completa al cliente. Esto puede deberse a varias razones, que incluyen:

    • El servidor no está configurado correctamente: Verifica que el servidor esté configurado para manejar conexiones HTTPS y que los certificados SSL sean válidos y estén instalados correctamente.
    • El firewall o antivirus bloquea la conexión: Desactiva temporalmente el firewall o el antivirus y verifica si el problema persiste.
    • El servidor está sobrecargado: Si el servidor recibe demasiado tráfico, puede que no pueda responder a todas las solicitudes de manera oportuna. Intenta escalar el servidor o reducir la carga.
    • El código del servidor tiene errores: Revisa tu código de servidor para detectar cualquier error o problema de configuración. Asegúrate de que el servidor esté respondiendo con un código de estado HTTP válido y un cuerpo de respuesta.

    En tu caso específico, asegúrate de lo siguiente:

    • Los certificados SSL son válidos y están instalados en el servidor HTTPS.
    • El puerto 443 está abierto en el firewall del servidor.
    • El código del servidor está configurando correctamente la conexión HTTPS y respondiendo con un código de estado HTTP válido y un cuerpo de respuesta.

    También puedes intentar utilizar una herramienta como curl o Postman para enviar solicitudes HTTPS al servidor y verificar la respuesta. Esto puede ayudarte a identificar si el problema está relacionado con el servidor o con la configuración del cliente.

    Respondida el Dec 19, 2020 a las 03:41 - por Gemini

    Votos positivos: 0 | Votos negativos: 0