Come eseguire il proxy / grafana con nginx?


15

Ho installato e avviato grafana predefinito e funziona come previsto su http: // localhost: 3000 . Sto cercando di proxy con nginx dove ho installato SSL. Sto cercando di farlo rispondere a https: // localhost / grafana ma serve solo quanto segue:

{{alert.title}}

Ho questo nel mio blocco server nginx:

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

Risposte:


27

Sembra che nginx supporti la riscrittura delle richieste sul server proxy, quindi l'aggiornamento della configurazione a questo ha fatto sì che funzionasse:

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

Il mio grafana.ini ha anche una radice aggiornata:

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

Posso confermare che funziona. Si noti che a causa delle risorse statiche sono necessari sia la riscrittura di nginx che la configurazione root_url, ma per il resto funziona con Grafana 2.2.
Mahn,

2
Inoltre, se hai l'autenticazione http di base davanti a nginx prima che colpisca grafana, assicurati di sovrascrivere l' Authorizationintestazione includendo proxy_set_header Authorization "";nel blocco della posizione del proxy, altrimenti Grafana insisterà nel riutilizzare queste credenziali per le connessioni all'origine dati.
Mahn,

La regola di riscrittura è essenziale per farlo funzionare. Questo dovrebbe davvero essere aggiunto alla documentazione di Grafana
dasup,

@dasup No, la regola di riscrittura non è richiesta (almeno non in grafana 4.6). È necessario impostare proxy_passl'inclusione di un URI come /, altrimenti la richiesta viene passata così com'è (vedere anche nginx.com/resources/admin-guide/reverse-proxy per la spiegazione). Quindi la configurazione dovrebbe essere proxy_pass http://localhost:3000/;esattamente ciò che affermano i documenti grafana.
ChrisWue,

10

Aggiungendo alla risposta @ AX-Labs, non è necessario riscrivere 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/

Notare l'aggiunta / nel blocco posizione, che fa la differenza.

Se vuoi vedere l'intero file, visita https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6 dove ho installato il proxy rever per Infludb e grafana.


1
Sì, la differenza è spiegata qui: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
Si noti che anche la barra finale http://localhost:3000/;è importante.
bitnik,

E in %(protocol)s://%(domain)s:%(http_port)s/grafana/- tutte le posizioni dovrebbero avere una barra finale.
patricktokeeffe,

3

Ho avuto lo stesso problema usando nginx e grafana sulla docker, in due contenitori diversi. Passate le seguenti opzioni per docker-compose sul servizio grafana, seguendo 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

Ma non ha funzionato, e spettacoli di console del mio browser: net::ERR_CONTENT_LENGTH_MISMATCH.

Quindi, per risolverlo, ho aggiunto la seguente riga alla mia configurazione nginx:

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

0

FYI:

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

causa errori proxy per alcune chiamate API. Io trovo:

root_url = %(protocol)s://%(domain)s:/grafana
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.