0

我刚开始使用 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

洪水码头工人-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

先感谢您

4

1 回答 1

0

所以我最终找到了如何让它与子目录一起工作,虽然它有点棘手,我将在下面解释原因。我在 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"          

您还需要将base密钥更新web.conf为您想要base: "/deluge" 的子目录之后,您可以访问您的 deluge UI https://somehost.com/deluge,但是您不能在本地使用它(例如 192.168.1.25),因为现在将请求所有 .css/.js 文件192.168.1.25/deluge/style.css ,这是不正确的。traefik 在所有 somehost.com/deluge 请求上所做的只是剥离 /deluge 部分并将请求转移到 192.168.1.25 路径,没有子目录。对我来说这很好,我正在使用 SSL 来保护请求,所以可以在我的网络之外使用它,就像在家里使用它一样。

但是,如果您知道如何使两个(全局、本地)网址同时工作,如果您将答案放在这里,我将不胜感激。

于 2021-03-21T08:23:48.967 回答