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


Tal vez pueda interesarte


Compartí este artículo