Назад | Перейти на главную страницу

Как прокси / графана с nginx?

Я настроил и запустил графану по умолчанию, и она работает, как ожидалось, на http: // локальный: 3000. Я пытаюсь проксировать его с помощью nginx, где у меня установлен ssl. Я пытаюсь ответить на https: // локальный хост / графана но он обслуживает только следующее:

{{alert.title}}

У меня есть это в моем серверном блоке nginx:

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

Кажется, что 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

Добавляя ответ @ 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 где у меня есть настройка прокси-сервера Rever для Infludb, а также для графаны.

У меня такая же проблема при использовании nginx и grafana на докере в двух разных контейнерах. Пройдены следующие параметры для docker-compose на сервисе 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!
}

К вашему сведению:

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

вызывает ошибки прокси для некоторых вызовов API. Я нахожу:

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

Я немного усомнился со всеми ответами здесь. Для полноты и документации для себя полный пример, который работал в моем случае.

/etc/grafana/grafana.ini:

... DEFAULT CONFIGURATION

#################################### Server ################################

... DEFAULT CONFIGURATION

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

... DEFAULT CONFIGURATION

nginx.conf выглядит так:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        #

        ##
        # Logging Settings
        ##
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        ... DEFAULT SETTINGS ...

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;

        # note that I am not using sites-enabled:
        # include /etc/nginx/sites-enabled/*;
}

Я поместил конфигурацию NGINX для графаны в отдельный grafana.conf находится в /etc/nginx/conf.d/:

server {

  listen 80;
  listen [::]:80;

  listen 443 ssl;
  listen [::]:443 ssl;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
  ssl_prefer_server_ciphers on;

  ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
  ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

  root /var/www/<my.hostname.xy>/html;
  index index.html index.htm;

  server_name <my.hostname.xy>;

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