El objetivo de utilizar un servidor Nginx como front-end a Grafana es implementar soporte para HTTP/S.
Supongamos que hemos compilado e instalado desde los fuentes un servidor Nginx. A su vez hemos instalado Grafana y ambos servidores se encuentran funcionando.
El primer paso consiste en configurar el servidor Nginx como proxy reverso a Grafana:
root@debian:~# cd /usr/local/etc/nginx/ root@debian:/usr/local/etc/nginx# nano nginx.conf
Configurar un nuevo location, por ejemplo /grafana
.
Si el servidor utiliza una configuración de sitios disponibles/habilitados al estilo Debian:
[...] http { [...] server { listen 443 ssl http2; [...] include sites-enabled/*.conf; } [...]
Crear un nuevo archivo grafana.conf
dentro del directorio sites-available/
:
root@debian:/usr/local/etc/nginx# cd sites-available/ root@debian:/usr/local/etc/nginx/sites-available# nano grafana.conf
Utilizar la siguiente configuración de proxy reverso:
location /grafana/ { allow 129.168.1.0/24; deny all; proxy_pass http://127.0.0.1:3000/; proxy_set_header Host $host; proxy_set_header Front-End-Https on; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Strict-Transport-Security "max-age=15552000; includeSubDomains"; }
Si no se utiliza el esquema de configuración disponibles/habilitados, insertar este bloque directamente dentro de la configuración server {
del archivo nginx.conf
.
En este ejemplo se asume que Grafana escucha en el puerto por defecto (3000
).
Luego habilitar el sitio:
root@debian:/usr/local/etc/nginx/sites-available# cd ../sites-enabled/ root@debian:/usr/local/etc/nginx/sites-enabled# ln -s ../sites-available/grafana.conf .
Verificar si la configuración es correcta antes de recargar Nginx:
root@debian:/usr/local/etc/nginx/sites-available# service nginx testconfig nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Finalmente, recargar Nginx:
root@debian:/usr/local/etc/nginx/sites-enabled# service nginx reload nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Reloading nginx configuration: OK
El siguiente paso consiste en configurar Grafana para que funcione correctamente detrás de un proxy con el alias "/grafana":
root@debian:/usr/local/etc/nginx/sites-enabled# cd /etc/grafana/ root@debian:/etc/grafana# nano grafana.ini
Debajo de la sección [server]
, configurar el dominio y URL raíz de Grafana:
# The public facing domain name used to access grafana from a browser ;domain = localhost domain = www.linuxito.com
# The full public facing url you use in browser, used for redirects and emails # If you use reverse proxy and sub path specify full url (with sub path) ;root_url = http://localhost:3000 root_url = https://www.linuxito.com/grafana/
Reiniciar Grafana:
root@debian:/etc/grafana# service grafana-server restart [ ok ] Stopping Grafana Server:. [ ok ] Starting Grafana Server:.
Acceder desde un navegador para comprobar el correcto funcionamiento:

Referencias