Cómo Configurar un Proxy Inverso con NGINX para Acceder a Grafana de Forma Segura

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Configurar un proxy inverso para acceder a Grafana via web es una tarea útil para mejorar la seguridad, personalizar la URL de acceso y habilitar HTTPS. A continuación, te guío paso a paso con ejemplos de configuración para un servidor web popular como NGINX.

Requisitos previos

  1. Servidor con NGINX instalado. Si no lo tienes, instala NGINX:

    sudo apt update sudo apt install nginx
  2. Grafana instalado y corriendo en el servidor (puerto por defecto: 3000).
  3. Dominio o IP pública si deseas acceder remotamente.
  4. Certificado SSL (puedes usar Let's Encrypt o uno propio).

Pasos para configurar el proxy inverso

Paso 1: Crear un archivo de configuración en NGINX

Crea un archivo de configuración para Grafana:

sudo nano /etc/nginx/sites-available/grafana

Paso 2: Configurar el proxy inverso

Agrega el siguiente contenido básico para redirigir el tráfico HTTP al puerto 3000 de Grafana:

server {
listen 80;
server_name tu-dominio.com;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Guarda y cierra el archivo (CTRL + O, luego CTRL + X).

Paso 3: Activar la configuración

Crea un enlace simbólico para habilitar la configuración:

sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/

Reinicia NGINX para aplicar los cambios:

sudo systemctl restart nginx

Paso 4: Verificar el funcionamiento

  1. Asegúrate de que Grafana esté ejecutándose:

    sudo systemctl status grafana-server
  2. Accede a http://tu-dominio.com desde un navegador.

Paso 5 (Opcional): Habilitar HTTPS con Let's Encrypt

Si deseas utilizar HTTPS:

  1. Instala Certbot para NGINX:

    sudo apt install certbot python3-certbot-nginx
  2. Genera y configura automáticamente el certificado:

    sudo certbot --nginx -d tu-dominio.com
  3. Verifica la renovación automática del certificado:

    sudo certbot renew --dry-run

Esto actualizará automáticamente la configuración de NGINX para usar HTTPS.

Archivo final de configuración para HTTPS

Si configuras HTTPS, el archivo /etc/nginx/sites-available/grafana quedará así:

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

server {
listen 443 ssl;
server_name tu-dominio.com;

ssl_certificate /etc/letsencrypt/live/tu-dominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tu-dominio.com/privkey.pem;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Consejos adicionales

  • Configurar un subdirectorio (opcional): Si deseas que Grafana esté en un subdirectorio como http://tu-dominio.com/grafana, ajusta location / a location /grafana y configura el parámetro root_url en el archivo grafana.ini:

    [server] root_url = %(protocol)s://%(domain)s/grafana/
  • Prueba la configuración de NGINX antes de reiniciarlo:

    sudo nginx -t
  • Permitir tráfico en el firewall, si aplica:

    sudo ufw allow 'Nginx Full'

Con estos pasos, deberías tener Grafana accesible mediante un proxy inverso configurado y seguro.