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
- Servidor con NGINX instalado. Si no lo tienes, instala NGINX:
sudo apt update sudo apt install nginx
- Grafana instalado y corriendo en el servidor (puerto por defecto:
3000
). - Dominio o IP pública si deseas acceder remotamente.
- 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
- Asegúrate de que Grafana esté ejecutándose:
sudo systemctl status grafana-server
- Accede a
http://tu-dominio.com
desde un navegador.
Paso 5 (Opcional): Habilitar HTTPS con Let's Encrypt
Si deseas utilizar HTTPS:
- Instala Certbot para NGINX:
sudo apt install certbot python3-certbot-nginx
- Genera y configura automáticamente el certificado:
sudo certbot --nginx -d tu-dominio.com
- 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
, ajustalocation /
alocation /grafana
y configura el parámetroroot_url
en el archivografana.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.