Як проксі / графану з nginx?


15

Я налаштував і запустив програму grafana за замовчуванням, і вона працює так, як очікувалося на http: // localhost: 3000 . Я намагаюся проксі проінфікувати його з nginx, де у мене встановлений ssl. Я намагаюсь відповісти на https: // localhost / grafana, але він служить лише наступному:

{{alert.title}}

Я маю це у своєму блоці серверів nginx:

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

Відповіді:


27

Здається, nginx підтримує перезапис запитів на проксі-сервер, тому оновлення конфігурації до цього змусило його працювати:

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

Мій grafana.ini також має оновлений корінь:

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

Я можу підтвердити, що це працює. Зауважте, що через статичні активи потрібні як перезапис nginx, так і конфігурація root_url, але в іншому випадку це зробити трюк з Grafana 2.2.
Ман

2
Крім того, якщо у вас є основний http auth перед nginx, перш ніж він потрапить на grafana, переконайтеся, що ви переосмислите Authorizationзаголовок, включивши proxy_set_header Authorization "";у свій блок розташування проксі, інакше Grafana наполягає на повторному використанні цих даних для підключення до джерела даних.
Ман

Правило перезапису є важливим для його роботи. Це дійсно слід додати до документації Grafana за
dasup

@dasup Ні, правило перезапису не потрібно (принаймні, не в графані 4.6). Вам потрібно встановити proxy_passтакий URI, як /, інакше запит передається як є (див. Також nginx.com/resources/admin-guide/reverse-proxy для пояснення). Таким чином, конфігурація повинна бути такою, proxy_pass http://localhost:3000/;якою саме є стан графана.
ChrisWue

10

Додавши відповідь до @ AX-Labs, вам не потрібно буде переписувати 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/

Зверніть увагу на додатковий / у блоку розташування, що робить усе різницею.

Якщо ви хочете переглянути весь файл, відвідайте https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6, де у мене є налаштування реверсійного проксі для Infludb, а також grafana.


1
Так, тут пояснюється різниця: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
Зауважте, що http://localhost:3000/;також слід мати важливе значення.
бітник

І %(protocol)s://%(domain)s:%(http_port)s/grafana/все - у всіх місцях розташування має бути косою косою рисою.
patricktokeeffe

3

У мене виникла така ж проблема, коли я використовував nginx та grafana на docker, у двох різних контейнерах. Передав наступні параметри для докер-композиції для служби grafana, дотримуючись 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

Але це не спрацювало, і консоль показує свій браузер: net::ERR_CONTENT_LENGTH_MISMATCH.

Отже, щоб виправити це, я додав наступний рядок до моєї конфігурації 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

викликає помилки проксі для деяких дзвінків API. Я знайшов:

root_url = %(protocol)s://%(domain)s:/grafana
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.