【问题标题】:Using Traefik to reverse proxy Grafana at a suburl; 404 responses使用 Traefik 在 suburl 反向代理 Grafana; 404 回复
【发布时间】:2018-04-12 01:55:24
【问题描述】:

我已尽力遵循 Grafana 和 Traefik 的文档,通过 Traefik 将传入请求反向代理到 https://metrics.mydomain/grafana 到作为容器运行的 Grafana 实例,但我收到来自 Grafana 的 404 响应,我想不通找出原因。

这是我在阅读文档并在我的 docker-compose.yml 文件中尝试各种事情后所做的:

version: '3'
services:
  traefik:
    image: traefik
    restart: always
    ports:
     - 80:80
     - 443:443
     - 8080:8080
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock
     - /home/ben/traefik.toml:/etc/traefik/traefik.toml
     - /etc/letsencrypt/live/mydomain/fullchain.pem:/mydomain_fullchain.pem
     - /etc/letsencrypt/live/mydomain/privkey.pem:/mydomain_privkey.pem
  grafana:
    image: grafana/grafana
    restart: always
    ports:
     - 3000:3000
    volumes:
     - /srv/grafana:/var/lib/grafana
    environment:
     - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/grafana
    labels:
     - traefik.enable=true
     - 'traefik.frontend.rule=Host:metrics.mydomain;PathPrefix:/grafana;'
     - 'traefik.frontend.redirect.entryPoint=https'

Traefik 确实对此有所了解。以下是它在仪表板上显示的内容:

但是,当我实际请求https://metrics.mydomain/grafana时,我得到的是404和一个错误文档,然后是自定义错误文档请求的资源的后续404:

最后,也是最令人困惑的是,Grafana 本身收到的请求似乎是正确的,但仍会导致 404:

method=GET path=/grafana status=404 remote_addr=192.168.0.1
method=GET path=/grafana/public/build/grafana.dark.css status=404 remote_addr=192.168.0.1
...etc

我不明白为什么这么挑剔,而且(对我而言)似乎没有任何证据表明实际问题是什么。

附言- 我确实对看起来相关的 Grafana 问题发表了评论。 https://github.com/grafana/grafana/issues/2066#issuecomment-380647174

【问题讨论】:

    标签: grafana traefik


    【解决方案1】:

    我能够通过使用 PathPrefixStrip 而不是 PathPrefix 来解决此问题

    【讨论】:

      【解决方案2】:

      当我在最新的图片中写下这个问题时,这个问题得到了解决。我在使用 grafana/grafana:5.1.0 时遇到了同样的问题。

      我的工作配置供参考:

      version: '2'
      
      services:
        grafana:
          image: grafana/grafana
          environment:
            - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/grafana
            - GF_SERVER_DOMAIN=devserver1.mydomain
            - GF_SERVER_SERVE_FROM_SUB_PATH=true
          labels:
            - "traefik.http.routers.grafana.rule=Host(`devserver1.mydomain`) && PathPrefix(`/grafana`)"
            - "traefik.http.services.grafana.loadbalancer.server.port=3000"
          networks:
            - traefik_default
          volumes:
            - grafana-storage:/var/lib/grafana
      networks:
        traefik_default:
          external: true
      volumes:
        grafana-storage:
      

      Grafana 关于在反向代理 Run Grafana behind a reverse proxy 后面运行的文档。关于如何Configure with environment variables的解释。

      【讨论】:

        猜你喜欢
        • 2019-05-10
        • 1970-01-01
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 2021-11-14
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        相关资源
        最近更新 更多