Comment proxy / grafana avec nginx?

15

J'ai configuré et démarré grafana par défaut et cela fonctionne comme prévu sur http: // localhost: 3000 . J'essaie de le proxy avec nginx où j'ai installé SSL. J'essaie de le faire répondre à https: // localhost / grafana mais cela sert juste ce qui suit:

{{alert.title}}

J'ai ceci dans mon bloc serveur nginx:

location /grafana {
     proxy_pass         http://localhost:3000;
     proxy_set_header   Host $host;
}
AX Labs
la source

Réponses:

27

Il semble que nginx supporte la réécriture des requêtes sur le serveur mandaté, donc la mise à jour de la configuration pour cela a fonctionné:

location /grafana {
     proxy_pass         http://localhost:3000;
     rewrite  ^/grafana/(.*)  /$1 break;
     proxy_set_header   Host $host;
}

Mon grafana.ini a également une racine mise à jour:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana
AX Labs
la source
Je peux confirmer que cela fonctionne. Notez qu'en raison des actifs statiques, la réécriture nginx et la configuration root_url sont nécessaires, mais sinon, cela fait l'affaire avec Grafana 2.2.
Mahn
2
De plus, si vous avez l'authentification http de base devant nginx avant qu'il n'atteigne grafana, assurez-vous de remplacer l'en- Authorizationtête en l'incluant proxy_set_header Authorization "";dans votre bloc d'emplacement proxy, sinon Grafana insistera pour réutiliser ces informations d'identification pour les connexions à la source de données.
Mahn
La règle de réécriture est essentielle pour le faire fonctionner. Cela devrait vraiment être ajouté à la documentation de Grafana
dasup
@dasup Non, la règle de réécriture n'est pas requise (du moins pas dans grafana 4.6). Vous devez définir proxy_passpour inclure un URI tel que /, sinon la demande est transmise telle quelle (voir aussi nginx.com/resources/admin-guide/reverse-proxy pour l'explication). La configuration devrait donc être proxy_pass http://localhost:3000/;exactement ce que les documents de Grafana indiquent.
ChrisWue
10

En ajoutant à la réponse @ AX-Labs, vous n'avez pas besoin de réécrire l'URL.

nginx.conf

location /grafana/ {
     proxy_pass         http://localhost:3000/;
     proxy_set_header   Host $host;
}

grafana.ini update root:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/

Remarquez le supplément / dans le bloc d'emplacement, qui fait toute la différence.

Si vous souhaitez voir l'intégralité du fichier, veuillez visiter https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6 où j'ai la configuration du proxy rever pour Infludb ainsi que grafana.

Adarsha
la source
1
Oui, la différence est expliquée ici: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue
2
Notez que la barre oblique de fin est http://localhost:3000/;également importante.
bitnik
Et dans %(protocol)s://%(domain)s:%(http_port)s/grafana/- tous les emplacements doivent avoir une barre oblique.
patricktokeeffe
3

J'ai eu le même problème lors de l'utilisation de nginx et grafana sur docker, dans deux conteneurs différents. Passé les options suivantes pour docker-composer sur le service grafana, en suivant http://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-path :

- GF_SERVER_DOMAIN=foo.bar.com
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:/grafana

Mais cela n'a pas fonctionné, et les spectacles de la console de mon navigateur: net::ERR_CONTENT_LENGTH_MISMATCH.

Donc, pour le corriger, j'ai ajouté la ligne suivante à ma configuration nginx:

location /grafana/ {
  proxy_pass http://monitoring_grafana:3000/;
  proxy_max_temp_file_size 0; # THIS MADE THE TRICK!
}
boris quiroz
la source
0

Pour info:

root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

provoque des erreurs de proxy pour certains appels d'API. Je trouve:

root_url = %(protocol)s://%(domain)s:/grafana
JasonfromDR
la source