Apache no realiza reverse proxy al puerto 3000, ayuda.

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

Ruiz86

Zeta
SEO
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
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?
 
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