Apache como proxy para Grafana

By | September 17, 2018

Casi siempre suelo configurar Apache o Nginx como proxys para otros servicios que ejecuto de forma local. Principalmente por dos razones:

  • Cuantas menos aplicaciones tengamos escuchando en una IP accesible desde el exterior mejor, ya que reducimos la superficie de ataques y vulnerabilidades.
  • Permite centrar la configuración de seguridad en un único punto, llamémosle Apache/Nginx o un F5 o balanceador que tengamos por delante. Además podemos complementar estos componentes frontales con soluciones que mejoren la seguridad, como por ejemplo mod_security para Apache.

Si estamos utilizando Grafana para visualizar gráficas, por defecto escuchará en localhost en el puerto 3000. En el fichero de configuración /etc/grafana/grafana.ini tendremos:

...   
# 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
...   

Comentamos o borramos la línea root_url y ponemos:

...   
root_url = %(protocol)s://%(domain)s:%(http_port)s/estadisticas
...   

La parte final es el contexto por el que vamos a acceder a Grafana.

Por otro lado en nuestro servidor Apache tendremos que cargar el módulo mod_proxy y configurar en el VirtualHost correspondiente (la IP es un ejemplo para este caso, además va por protocolo seguro HTTPS):


<VirtualHost 192.168.2.101:443>
	...
	# Proxy para Grafana
	ProxyPreserveHost On
	ProxyPass /estadisticas  http://localhost:3000
	ProxyPassReverse /estadisticas http://localhost:3000
	...
</VirtualHost>

Reiniciamos Apache y Grafana y ya podremos acceder desde https://192.168.2.101/estadisticas a nuestros paneles de Grafana 🙂