Servicios / diciembre 1, 2021

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno

En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.

Esta configuración nos da algunas ventajas, ya que podemos configurar un subdominio o dominio y por lo tanto configurar acceso HTTPS.

En este tutorial vamos a explicar como configurar Nginx para que haga de proxy para acceder al puerto de forma interna y que sea Nginx quien responda a la petición desde fuera. Por lo tanto, contamos que Nginx ya está configurado en el servidor.

Configuración de Nginx Proxy

Tendremos que crear o editar nuestro fichero de configuración para Nginx de nuestra aplicación, por lo general se debería de encontrar en /etc/nginx/sites-enabled y deberemos de tener el siguiente contenido:

server {
    listen         80;
    server_name    [SUB_DOMINIO];
    return         301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name [SUB_DOMINIO];

    location / {
        proxy_pass          http://localhost:[PUERTO_INTERNO];
        proxy_set_header    Host    $host;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_pass_header   server;
    }
    access_log /var/logs/nginx/access.log;
    error_log /var/logs/nginx/error.log notice;
}

Deberemos de tener en cuenta, de que tenemos que cambiar algunos parámetros de esa configuración. Lo primero será configurar correctamente el server_name y cambiar [SUB_DOMINIO] por un dominio o subdominio que queramos que tenga nuestra aplicación o servicio. Por otro lado, deberemos de modificar el proxy_pass y cambiar el [PUERTO_INTERNO] por el puerto que esté utilizando nuestra aplicación o servicio.

Por ejemplo, para Grafana que escucha internamente por el puerto 3000, la configuración sería la siguiente:

server {
    listen         80;
    server_name    grafana.voidnull.es;
    return         301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name grafana.voidnull.es;

    location / {
        proxy_pass          http://localhost:3000;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_pass_header   server;
    }
    access_log /var/logs/nginx/access.log;
    error_log /var/logs/nginx/error.log notice;
}

Con esta configuración, sería suficiente para acceder por dominio a nuestra aplicación. Únicamente queda reiniciar Nginx tras comprobar la sintaxis y luego crear el certificado con certbot.

# nginx -t
# systemctl restart nginx

3 comentarios “Configurar Proxy Inverso con Nginx para que escuche a un puerto interno”

Suscribirte
Notificarme
guest
3 Comments
más viejos
más nuevos más votados
Inline Feedbacks
View all comments
trackback

[…] Configurar Proxy Inverso con Nginx para que escuche a un puerto interno Comparte el contenido Compartir […]

trackback

[…] Configurar Proxy Inverso con Nginx para que escuche a un puerto interno Comparte el contenido Compartir […]

trackback

[…] Configurar Proxy Inverso con Nginx para que escuche a un puerto interno Comparte el contenido Compartir […]

Utilizamos cookies propias y de terceros para mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Doble clic sobre aquí para cerrar.