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;
}
AX Labs
quelle

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
AX Labs
quelle
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.

Adarsha
quelle
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!
}
boris quiroz
quelle
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
JasonvonDR
quelle