簡體   English   中英

如何讓traefik從docker內部重定向到特定的非docker端口

[英]How to get traefik to redirect to specific non-docker port from inside docker

首先,如果我沒有使用正確的術語來問這個問題,我很抱歉,但我不適合現有的術語。

我在 docker 容器中運行 traefik 並使用 PathPrefix 選項提供一些服務,例如,www.myserver.com/wordpress 重定向到運行 wordpress 的 docker 容器。

但是如何讓它重定向到 docker 容器之外呢? 具體來說,我如何讓 www.myserver.com 重定向到我機器中的端口 8080 以提供我在主機操作系統中運行的服務(而不是在 docker 容器中)?

這是我的traefik.toml

logLevel = "DEBUG"
defaultEntryPoints = ["http", "https"]

[entryPoints]
    [entryPoints.http]
        address = ":80"
        compress = false
        [entryPoints.http.redirect]
            entryPoint = "https"
    [entryPoints.https]
        address = ":443"
        [entryPoints.https.tls]

[acme]
email = "mymail@mail.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
#onDemand = true
[[acme.domains]]
    main = "www.myserver.com"

[web]
address = ":8888"

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "www.myserver.com"
watch = true
exposedbydefault = false

docker-compose.yml用於 traefik 容器:

version: "2"

services:
  traefik:
    image: traefik
    network_mode: "host"
    ports:
      - "80:80"
      - "443:443"
      - "8888:8888"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${SERVER_DIR}/AppData/traefik:/etc/traefik/
      - ${PWD}/acme.json:/acme.json
      - ${PWD}/traefik.toml:/etc/traefik/traefik.toml
      - ${PWD}/servers.toml:/etc/traefik/servers.toml
    restart: never

使用新的 Traefik (v.2),您需要使用標簽和外部文件的組合,您可以在我的工作示例下方找到。

在您的 docker compose 中,您需要添加命令來定義外部文件並啟用提供程序

  - "--providers.file=true"
  - "--providers.file.filename=/etc/traefik/rules.toml"

在您的文件 (rules.toml) 中,將路由轉發到您的外部服務(注意語法,使用字符來定義主機(`))

例子:

Docker-撰寫:

  traefik:
    image: "traefik:v2.0.0"
    container_name: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge=true"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.myhttpchallenge.acme.email=xx@xx.com"
      - "--providers.file=true"
      - "--providers.file.filename=/etc/traefik/rules.toml"
      - "--providers.docker=true"
      - "--providers.file.watch=true"
    ports:
      - "80:80"
      - "8080:8080"
      - "443:443"
    networks:
      - proxy
    environment:
      - CF_API_EMAIL="xx"
      - CF_API_KEY="xx"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./traefik/rules.toml:/etc/traefik/rules.toml"

規則.toml

  [http.routers]
   # Define a connection between requests and services
     [http.routers.nasweb]
        rule = "Host(`nas.xxxx.com`)"
        entrypoints = ["websecure"]
        service = "nas"
     [http.routers.nasweb.tls]
        certResolver = "myhttpchallenge"


 [http.services]
        # Define how to reach an existing service on our infrastructure
        [http.services.nas.loadBalancer]
           [[http.services.nas.loadBalancer.servers]]
             url = "http://192.168.0.165:80"

我已經擺弄並找到了答案。

traefik.toml添加:

################################################################
# File configuration backend
################################################################
# Enable file configuration backend
# Optional
[file]
        filename = "servers.toml"

# Enable watch file changes
        watch = true

docker-compose.ymlvolumes:更改為:

volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  - ${SERVER_DIR}/AppData/traefik:/etc/traefik/
  - ${PWD}/acme.json:/acme.json
  - ${PWD}/traefik.toml:/etc/traefik/traefik.toml
  - ${PWD}/servers.toml:/servers.toml

添加文件servers.toml

loglevel = "ERROR"

[backends]
[backends.nasweb]
        [backends.nasweb.servers.nasweb]
            url = "http://192.168.1.11:8080"

[frontends]
        [frontends.domain]
                backend = "nasweb"
        [frontends.domain.routes.domain]
                rule = "Host:www.myserver.com"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM