如何解决Traefik 和 Deluge 返回 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
提前致谢
解决方法
所以我最终找到了如何让它与子目录一起工作,虽然这有点棘手,我将在下面解释原因。 我在洪水 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"
您还需要将 base
中的 web.conf
键更新为您想要的子目录 base: "/deluge"
之后,您可以在 https://somehost.com/deluge
上访问洪水 UI,但是您不能在本地使用它(例如 192.168.1.25),因为现在所有 .css/.js 文件都将被请求到 192.168.1.25/deluge/style.css 这是不正确的。 traefik 在这里所做的是针对所有 somehost.com/deluge 请求,只是去除 /deluge 部分并将请求传输到 192.168.1.25 路径,而无需 subdir。对我来说很好,我使用 SSL 来保护请求,因此可以在我的网络外部使用它,就像在家里使用它一样。
但是,如果您知道如何让两个(全局的、本地的)网址同时工作,如果您能把答案放在这里,我将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。