Wie Proxy / Grafana mit Nginx?


15

Ich habe Standardgrafana eingerichtet und gestartet und es funktioniert wie erwartet unter http: // localhost: 3000 . Ich versuche, es mit Nginx Proxy, wo ich SSL installiert haben. Ich versuche, es auf https: // localhost / grafana antworten zu lassen, aber es dient nur den folgenden Zwecken :

{{alert.title}}

Ich habe dies in meinem Nginx-Server-Block:

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

Antworten:


26

Es scheint, dass Nginx das Umschreiben der Anforderungen an den Proxy-Server unterstützt.

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

Meine grafana.ini hat auch ein aktualisiertes Stammverzeichnis:

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

Ich kann bestätigen, dass dies funktioniert. Beachten Sie, dass aufgrund der statischen Assets sowohl das Nginx-Rewrite als auch die root_url-Konfiguration erforderlich sind. Andernfalls funktioniert es mit Grafana 2.2.
— Mahn

2
Stellen Sie außerdem sicher, dass Sie den AuthorizationHeader überschreiben, indem Sie ihn proxy_set_header Authorization "";in Ihren Proxy-Standortblock aufnehmen , wenn Sie grundlegende http-Authentifizierung vor nginx haben, bevor es auf grafana trifft. Andernfalls besteht Grafana darauf, diese Anmeldeinformationen für Datenquellenverbindungen wiederzuverwenden.
— Mahn

Die Umschreiberegel ist wichtig, damit es funktioniert. Dies sollte wirklich der Grafana-Dokumentation unter docs.grafana.org/installation/behind_proxy
— dasup hinzugefügt werden.

@dasup Nein, die Umschreiberegel ist nicht erforderlich (zumindest nicht in grafana 4.6). Sie müssen festlegen proxy_pass, dass ein URI eingeschlossen wird, z. B. /, da sonst die Anforderung unverändert weitergeleitet wird (eine Erläuterung finden Sie unter nginx.com/resources/admin-guide/reverse-proxy ). Also sollte die Konfiguration proxy_pass http://localhost:3000/;genau so sein, wie es in den grafana-Dokumenten steht.
— ChrisWue

10

Nach dem Hinzufügen zu @ AX-Labs müssen Sie die URL nicht neu schreiben.

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/

Beachten Sie das zusätzliche / im Location-Block, das den Unterschied ausmacht.

Wenn Sie die gesamte Datei sehen möchten, besuchen Sie bitte https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6, wo ich sowohl für Infludb als auch für grafana eine Proxy-Einrichtung habe.


1
Ja, der Unterschied wird hier erklärt: nginx.com/resources/admin-guide/reverse-proxy
— ChrisWue

2
Beachten Sie, dass der abschließende Schrägstrich http://localhost:3000/;ebenfalls wichtig ist.
— Bitnik

Und an %(protocol)s://%(domain)s:%(http_port)s/grafana/allen Stellen sollte ein Schrägstrich stehen.
— patricktokeeffe

3

Ich habe das gleiche Problem bei der Verwendung von Nginx und Grafana auf Docker in zwei verschiedenen Behältern. Bestand die folgenden Optionen zu Docker-compose auf grafana Service, folgende 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

Aber es hat nicht funktioniert, und Konsole zeigt meines Browsers: net::ERR_CONTENT_LENGTH_MISMATCH.

Um das Problem zu beheben, habe ich meiner Nginx-Konfiguration die folgende Zeile hinzugefügt:

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

0

Zu Ihrer Information:

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

verursacht Proxy-Fehler für einige API-Aufrufe. Ich finde:

root_url = %(protocol)s://%(domain)s:/grafana
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.