Я пытаюсь настроить работу Grafana на docker-compose за обратным прокси-сервером nginx, все работает нормально, если для меня установлено [auth.anonymous] равным enabled = true.
Но когда я отключаюанонимный вход и попытка входа с помощью токена «Authorization» в заголовке, я получаю ошибку ниже при переходе к Grafana sub_path:
Если вы видите, что Grafana не удалось загрузить файлы приложения
Это может быть вызвано настройками обратного прокси-сервера.
Если вы размещаете grafana в подпутье, убедитесь, что ваш параметр root_path grafana.ini содержит подпуть
Если у вас есть локальная сборка dev, убедитесь, что вы строите внешний интерфейс, используя: npm run dev, npm run watch или npm run build
ИногдаПерезапуск grafana-сервера может помочь
Мои настройки ngnix.conf:
server {
listen 80
charset utf-8
location /grafana-dashboard/ {
proxy_pass http://grafana:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
}
}
Grafana работает на grafana: 3000 из docker-compose.
Содержание docker-compose.config.yaml:
version: '3.4'
services:
grafana:
container_name: grafana
depends_on:
- db
networks:
- static-network
ports:
- 3000:3000
restart: always
volumes:
- grafana_stor:/var/lib/grafana
environment:
- GF_AUTH_PROXY_ENABLED=true
- GF_SERVER_DOMAIN=10.0.0.3
- GF_SERVER_ROOT_URL=http://10.0.0.3/grafana-dashboard/
user: "472"
volumes:
grafana_stor: {}
networks:
static-network:
ipam:
config:
- subnet: 172.20.0.0/16
Перед доступом к 10.0.0.3/grafana-dashboard/ я генерирую API_KEY, используя Grafana HTTP_API / api / auth / keys Grafana, а затем передаю возвращенный токен в заголовке «Authorization: Bearer [token]» на клиенте.
Просто чтобы прояснить, графическая панель инструментов предназначалась для отображения на iframe в моем веб-приложении, но, поскольку мне нужно передать заголовок авторизации, я делаю запрос к / grafana-dashboard /, обслуживаемому nginx изатем поместите ответ «blob» на iframe.
Вся идея в том, чтобы иметь «единый вход» в grafana и в мое веб-приложение.Таким образом, пользователям, которые только что вошли в веб-приложение, также не нужно входить в систему grafana.Но если графана используется напрямую (не из iframe), потребуется экран входа в систему графана или простая аутентификация nginx.