как использовать X-Forwarded-Prefix в бэкэнде файла - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь настроить traefik с файловым бэкендом для связи с сервером grafana в контейнере LXC.

Это мой файл конфигурации:

[file]
# rules
[backends]
  [backends.backend2.servers.server1]
     url = "http://192.168.255.250:3000"
[frontends]
  [frontends.frontend2]
    entryPoints = ["http"]
    backend = "backend2"
    passHostHeader = true
      [frontends.frontend2.routes]
      [frontends.frontend2.routes.route0]
        rule = "PathPrefixStrip: /grafana"

Бэкэнд Grafana прослушивает /

Итак, я могу связаться с http://example.com/grafana, но у меня есть перенаправление на http://example.com/login, которое не работает.Но http://example.com/grafana/login отвечает (без css, конечно, потому что графана, кажется, использует относительный URL).

Согласно документации :

Используйте* Strip matcher, если ваш бэкэнд прослушивает корневой путь (/), но должен маршрутизироваться по определенному префиксу.Например, PathPrefixStrip: / products будет соответствовать / products, а также / products / shoes и / products / shirts.Поскольку путь перед пересылкой удаляется, ожидается, что ваш бэкэнд будет прослушивать /.Если ваш бэкэнд обслуживает ресурсы (например, изображения или файлы Javascript), скорее всего, он должен возвращать правильно сконструированные относительные URL-адреса.Продолжая этот пример, бэкэнд должен возвращать /products/shoes/image.png (а не /images.png, который Traefik, скорее всего, не сможет связать с тем же бэкендом).Заголовок X-Forwarded-Prefix (доступный начиная с Traefik 1.3) можно запросить для динамического создания таких URL.

Кажется, мне нужно использовать заголовок X-Forwarded-Prefix, но я не знаюкак это использовать (я ничего не видел в документации).Может быть, вы можете помочь мне решить эту проблему?

С уважением

JMC

1 Ответ

0 голосов
/ 19 октября 2018

На самом деле проблема не в трафике.Я просто забыл указать путь в /etc/grafana.ini (поле root_url).Я думал, что в этом нет необходимости, поскольку входящий запрос не содержит пути / графана (потому что мы используем PathPrefixStrip).Но на самом деле графане нужно, чтобы он указывал эффективный URL-адрес клиента.

С уважением.

jmc

...