微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Traefik 和 Deluge 返回 No such Resource

如何解决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 举报,一经查实,本站将立刻删除。