使用与后端端口

时间:2017-07-17 20:44:12

标签: marathon traefik

我在服务面前有一个traefik实例。该服务在端口9000上运行。但是我希望port:8000代理对此服务的请求。两人都参加马拉松比赛。

我尝试使用traefik.port标签,但是当我执行此操作时,似乎假设后端也在8000上运行,从后端块判断:8000 / dashboard。

我也尝试了其他解决方案,例如

traefik.frontend.rule=Host:traefikhost:8000没有成功

在这个案例中,文档真的不清楚

1 个答案:

答案 0 :(得分:4)

您需要使用traefik.port来定义后端的端口。在您的情况下,它应该是traefik.port=9000

默认情况下,Traefik将侦听端口80,因为您希望它在另一个端口上监听您需要定义entryPoints的地址,例如--entryPoints='Name:http Address::8000',在此示例中它将在端口8000上听。

我将使用docker给你一个例子,然后你可以与马拉松并列。

运行Traefik以侦听端口8000

docker service create \
    --name traefik \
    --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
    --network traefik-net \
    --publish 8080:8080 \
    --publish 8000:8000 \
    traefik \
        --entryPoints="Name:http Address::8000" \
        --defaultentrypoints="http" \
        --checknewversion=false \
        --docker \
        --docker.swarmmode \
        --docker.domain=mydomain.com \
        --docker.watch \
        --docker.exposedbydefault=false \
        --web \
        --loglevel=DEBUG

后端侦听端口9000

docker service create \
    --name myweb \
    --mount type=bind,source=$PWD/httpd.conf,target=/usr/local/apache2/conf/httpd.conf \
    --label traefik.port=9000 \
    --label traefik.enable=true \
    --network traefik-net \
    httpd

测试一下,检查Traefik api

$ curl -s "http://localhost:8080/api" | jq .
{
  "docker": {
    "backends": {
      "backend-myweb": {
        "servers": {
          "server-myweb-1": {
            "url": "http://10.0.0.5:9000",
            "weight": 0
          }
        },
        "loadBalancer": {
          "method": "wrr"
        }
      }
    },
    "frontends": {
      "frontend-Host-myweb-mydomain-com": {
        "entryPoints": [
          "http"
        ],
        "backend": "backend-myweb",
        "routes": {
          "route-frontend-Host-myweb-mydomain-com": {
            "rule": "Host:myweb.mydomain.com"
          }
        },
        "passHostHeader": true,
        "priority": 0,
        "basicAuth": []
      }
    }
  }
}

现在请求您的后端服务:

$ curl -H "Host: myweb.mydomain.com" "http://localhost:8000/"
<html><body><h1>It works!</h1></body></html>