Apache no realiza reverse proxy al puerto 3000, ayuda.

  • Autor Autor Ruiz86
  • Fecha de inicio Fecha de inicio
Ruiz86

Ruiz86

Eta
SEO
Verificación en dos pasos activada
Antes de nada disculpas si no es el lugar correcto, he estado revisando y no encuentro la categoría de configuraciones de servidor y a chatGTP lo tengo ya en bucle 🙂

Voy al grano, a ver si alguien puede orientarme:

  • Tengo un back en node+express usando el puerto 3000 deplegado en mi servidor, si accedo a http://api.dominio.com:3000/ funciona, me da una respuesta que he preparado correctamente (Lo tengo arrancado con pm2).
  • Según he leido, al usar LetsEncrypt, solo funciona bajo el puerto 80 o 443 y para que la aplicación de express se cargue con https, tengo que hacer un reverse proxy con apache o nginx.

Partiendo de aquí, he optado por apache y en el archivo "/etc/apache2/sites-enabled/api.dominio.com.conf" he agregado esto:

Insertar CODE, HTML o PHP:
<VirtualHost *:443>
    ServerName api.dominio.com
    ServerAdmin webmaster@localhost

    SSLEngine on
    SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    ProxyRequests off
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/

</VirtualHost>

Y he reiniciado apache.
El resultado es que en https://api.dominio.com/ me carga un index.html que hay en blanco en vez de la aplicación express (que si lo sigue haciendo en http).

¿Qué me falta?
 
¿Te sirvió? Únete a la conversación

Con tu cuenta gratis puedes responder, escribirle al autor por mensaje privado y comprar con Saldo retenido: el pago se libera cuando recibes lo acordado.

Toma 30 segundos · vuelves a este tema al terminar
si lo deseas en nginx seria

Insertar CODE, HTML o PHP:
upstream webs {
        server 127.0.0.1:3000;
}

server {
      listen 80;
      server_name api.dominio.com;
      return 301 https://api.dominio.com$request_uri;
}


# HTTPS Server
server {
    listen 443 ssl;
    server_name api.dominio.com;
    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    location / {
        proxy_pass http://webs$request_uri;
        proxy_set_header X-Real-IP $http_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Connection "";
    }

}

Para generar los certificados he utilizado varias veces esta documentación:
 
si lo deseas en nginx seria

Insertar CODE, HTML o PHP:
upstream webs {
        server 127.0.0.1:3000;
}

server {
      listen 80;
      server_name api.dominio.com;
      return 301 https://api.dominio.com$request_uri;
}


# HTTPS Server
server {
    listen 443 ssl;
    server_name api.dominio.com;
    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    location / {
        proxy_pass http://webs$request_uri;
        proxy_set_header X-Real-IP $http_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Connection "";
    }

}

Para generar los certificados he utilizado varias veces esta documentación:
Me pasa lo mismo, por algun motivo con nginx tampoco hace caso.
 
Atrás
Arriba