[英]Traefik and Deluge returns No such Resource
我刚开始使用 Traefik 并尝试将 Deluge(torrent) docker 容器连接到也在容器中运行的 traefik。 问题是当我试图通过somename.ddns.net/deluge到达 deluge web ui 时,我收到错误 404 No such Resource。 没有这样的子资源。 到目前为止,我只能通过localip:8113/deluge直接访问它,或者如果我将 traefik 路由器设置为像somename.ddns.net/这样的根路径,但我想将其设置为 /deluge。 低于我目前的配置。 我看到一些 nginx 用户有类似的问题,但他们以某种方式解决了,所以应该是在 traefik 中修复的一种方法。
traefik docker-compose.yml
version: "3"
services:
traefik:
networks:
- traefik
image: traefik
container_name: traefik
restart: unless-stopped
ports:
- 8085:80
- 8086:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data:/my_data
environment:
- TRAEFIK_API=true
- TRAEFIK_PROVIDERS_DOCKER=true
- TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT=false
- TRAEFIK_ENTRYPOINTS_HTTP_ADDRESS=:80
- TRAEFIK_LOG=true
- TRAEFIK_LOG_LEVEL=DEBUG
- TRAEFIK_LOG_FILEPATH=/my_data/error.log
- TRAEFIK_ACCESSLOG=true
- TRAEFIK_ACCESSLOG_FILEPATH=/my_data/access.log
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik-http.rule=Host(`somename.ddns.net`)"
- "traefik.http.routers.traefik-http.service=api@internal"
- "traefik.http.routers.traefik-http.entrypoints=http"
networks:
traefik:
external: true
洪水 docker-compose.ym
version: "3"
networks:
traefik:
external: true
services:
deluge:
image: linuxserver/deluge
container_name: new_deluge
restart: unless-stopped
ports:
- 8113:8112
environment:
- PUID=1000
- PGID=1000
- DELUGE-LOGLEVEL=error
volumes:
- /home/ubuntu/.config/new_deluge:/config
labels:
- "traefik.enable=true"
- "traefik.http.routers.deluge.rule=Host(`somename.ddns.net`) && Path(`/deluge`)"
- "traefik.http.routers.deluge.middlewares=deluge-headers"
- "traefik.http.middlewares.deluge-headers.headers.customrequestheaders.X-Deluge-Base=/deluge"
- "traefik.http.middlewares.deluge-headers.headers.customrequestheaders.X-Frame-Options=SAMEORIGIN"
- "traefik.docker.network=traefik"
networks:
- default
- traefik
先感谢您
所以我最终找到了如何让它与子目录一起工作,虽然它有点棘手,我将在下面解释原因。 我在 deluge docker-compose 中的标签现在看起来如此:
"traefik.enable=true"
"traefik.http.routers.deluge.rule=Host(`somehost.com`) && Path(`/deluge`) || PathPrefix(`/deluge`)"
"traefik.http.services.deluge.loadbalancer.server.port=8112"
"traefik.http.routers.deluge.entrypoints=https,http"
"traefik.http.routers.deluge.middlewares=deluge-stripprefix"
"traefik.http.middlewares.deluge-stripprefix.stripprefix.prefixes=/deluge"
"traefik.http.routers.deluge.tls=true"
"traefik.docker.network=traefik"
您还需要将web.conf
中的base
密钥更新为您所需的子目录base: "/deluge"
之后,您可以在https://somehost.com/deluge
上访问您的 deluge UI,但您不能使用它在本地(例如 192.168.1.25),因为 all.css/.js 文件现在将被请求到 192.168.1.25/deluge/style.ZC7A62 8CBA22E28EB17B5F5C6AE2A266AZ ,这是不正确的。 traefik 在所有 somehost.com/deluge 请求上所做的只是剥离 /deluge 部分并将请求转移到 192.168.1.25 路径,没有子目录。 对我来说这很好,我正在使用 SSL 来保护请求,因此可以在我的网络之外使用它,就像在家里使用它一样。
但是,如果您知道如何使两个(全局、本地)网址同时工作,如果您将答案放在这里,我将不胜感激。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.