Bagaimana cara proxy / grafana dengan nginx?

15

Saya telah menyiapkan dan memulai grafana default dan berfungsi seperti yang diharapkan di http: // localhost: 3000 . Saya mencoba mem-proxy-nya dengan nginx tempat saya menginstal ssl. Saya mencoba untuk menanggapi https: // localhost / grafana tetapi hanya melayani sebagai berikut:

{{alert.title}}

Saya memilikinya di blok server nginx saya:

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

Jawaban:

26

Tampaknya nginx mendukung penulisan ulang permintaan ke server proksi sehingga memperbarui konfigurasi ini membuatnya berfungsi:

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

Grafana.ini saya juga memiliki root yang diperbarui:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana
Lab AX
sumber
Saya dapat mengkonfirmasi bahwa ini berfungsi. Perhatikan bahwa karena aset statis, nginx rewrite dan root_url config diperlukan, tetapi jika tidak, ia melakukan trik dengan Grafana 2.2.
Mahn
2
Juga, jika Anda memiliki http dasar auth di depan nginx sebelum hits grafana, pastikan Anda menimpa Authorizationheader dengan memasukkan proxy_set_header Authorization "";dalam blok lokasi proxy Anda, jika tidak, Grafana akan bersikeras menggunakan kembali kredensial ini untuk koneksi sumber data.
Mahn
Aturan penulisan ulang sangat penting untuk membuatnya bekerja. Ini harus benar-benar ditambahkan ke dokumentasi Grafana
dasup
@dasup Tidak, aturan penulisan ulang tidak diperlukan (setidaknya tidak dalam grafana 4.6). Anda perlu mengatur proxy_passuntuk menyertakan URI seperti /, jika tidak, permintaan akan diteruskan apa adanya (lihat juga nginx.com/resources/admin-guide/reverse-proxy untuk penjelasannya). Jadi konfigurasi harus proxy_pass http://localhost:3000/;persis seperti apa yang dinyatakan oleh dokumen grafana.
ChrisWue
10

Menambahkan ke jawaban @ AX-Labs, Anda tidak perlu menulis ulang 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/

Perhatikan tambahan / di blok lokasi, yang membuat semua perbedaan.

Jika Anda ingin melihat keseluruhan file, silakan kunjungi https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6 di mana saya memiliki pengaturan proksi rever untuk Infludb serta grafana.

Adarsha
sumber
1
Ya, perbedaannya dijelaskan di sini: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue
2
Perhatikan bahwa trailing slash http://localhost:3000/;juga penting.
bitnik
Dan di %(protocol)s://%(domain)s:%(http_port)s/grafana/- semua lokasi harus memiliki garis miring.
patricktokeeffe
3

Saya mendapat masalah yang sama ketika menggunakan nginx dan grafana di buruh pelabuhan, dalam dua wadah yang berbeda. Melewati opsi berikut untuk membuat galangan di layanan grafana, mengikuti 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

Tapi itu tidak bekerja, dan browser saya konsol menunjukkan: net::ERR_CONTENT_LENGTH_MISMATCH.

Jadi, untuk memperbaikinya, saya menambahkan baris berikut ke konfigurasi nginx saya:

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

FYI:

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

menyebabkan kesalahan proxy untuk beberapa panggilan API. Saya menemukan:

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