Nginx ile proxy / grafana nasıl yapılır?


15

Kurulum ve varsayılan grafana başlattım ve http: // localhost: 3000 beklendiği gibi çalışır . Ben ssl yüklü nginx ile proxy yapmaya çalışıyorum. Ben https: // localhost / grafana cevap var çalışıyorum ama sadece aşağıdaki hizmet vermektedir:

{{alert.title}}

Bu benim nginx sunucu bloğunda var:

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

Yanıtlar:


27

Nginx, proxy sunucusuna istekleri yeniden yazmayı destekliyor gibi görünüyor, bu nedenle yapılandırmayı güncellemek çalışmasını sağladı:

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

Benim grafana.ini de güncellenmiş bir kök var:

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

Bunun işe yaradığını doğrulayabilirim. Statik varlıklar nedeniyle hem nginx rewrite hem de root_url yapılandırmasının gerekli olduğunu, ancak aksi takdirde Grafana 2.2 ile hile yaptığını unutmayın.
Mahn

2
Ayrıca, nginx'in önünde grafana çarpmadan önce temel http yetkiniz varsa , proxy konum bloğunuza ekleyerek Authorizationüstbilgiyi geçersiz kıldığınızdan emin olun proxy_set_header Authorization "";, aksi takdirde Grafana veri kaynağı bağlantıları için bu kimlik bilgilerini yeniden kullanmakta ısrar edecektir.
Mahn

Yeniden yazma kuralı, çalışması için gereklidir. Bu gerçekten docs.grafana.org/installation/behind_proxy adresindeki Grafana
dasup

@dasup Hayır, yeniden yazma kuralı gerekli değildir (en azından grafana 4.6'da yoktur). Gibi proxy_passbir URI eklemek için ayarlamanız gerekir /, aksi takdirde istek olduğu gibi iletilir ( açıklama için ayrıca bkz. Nginx.com/resources/admin-guide/reverse-proxy ). Bu yüzden yapılandırma proxy_pass http://localhost:3000/;, grafana belgelerinin tam olarak belirttiği şey olmalıdır .
ChrisWue

10

@ AX-Labs yanıtına eklediğinizde, URL'yi yeniden yazmanıza gerek yoktur.

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/

Tüm farkı yaratan ek / konum bloğuna dikkat edin.

Dosyanın tamamını görmek istiyorsanız, lütfen Infludb ve grafana için vekil sunucu kurulumuna sahip olduğum https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6 adresini ziyaret edin .


1
Evet, fark burada açıklanmaktadır: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
Sondaki eğik çizginin http://localhost:3000/;de önemli olduğunu unutmayın .
bitnik

Ve içinde %(protocol)s://%(domain)s:%(http_port)s/grafana/- tüm konumlarda eğik çizgi olmalıdır.
patricktokeeffe

3

Dogin üzerinde nginx ve grafana kullanırken iki farklı kapta aynı problemi yaşadım. Aşağıdaki grafana hizmet liman işçisi-oluşturma deneyimine aşağıdaki seçenekleri Geçti 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

Ama benim tarayıcının konsol gösterileri çalışmak ve vermedi: net::ERR_CONTENT_LENGTH_MISMATCH.

Yani, düzeltmek için, nginx config'e aşağıdaki satırı ekledim:

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

0

Bilginize:

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

bazı API çağrıları için proxy hatalarına neden olur. Buldum:

root_url = %(protocol)s://%(domain)s:/grafana
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.