使用Traefik在子网址上反向代理Grafana;404回应

Ben*_*ins 4 grafana traefik

我已经尽力遵循Grafana和Traefik的文档,以将https://metrics.mydomain/grafana通过Traefik的代理传入请求反向转发给作为容器运行的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'
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

ps-我确实对似乎相关的Grafana问题发表了评论。 https://github.com/grafana/grafana/issues/2066#issuecomment-380647174

小智 7

我能够通过使用PathPrefixStrip而不是PathPrefix