标签: traefik

Traefik - 使用路径代理到后端

我需要代理http://www.example.com/foohttp://<backend>/bar,使用 nginx 我有这样的配置:

server {
    listen       80;
    client_max_body_size 2048M;
    server_name www.example.com;
    location /foo {
        proxy_pass      http://container_name/bar/;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}
Run Code Online (Sandbox Code Playgroud)

我会将其转换为 traefik。这是我的撰写文件:

version: '3'
services:
 traefik:
   image: traefik:1.7.3-alpine
   command: --api --docker
   ports:
    - "80:80"
    - "8080:8080"
   volumes:
    - /var/run/docker.sock:/var/run/docker.sock
   labels:
    - traefik.enable=false

 webapp:
   ...
   ...
   labels:
    - traefik.backend=bar
    - traefik.frontend.rule=Host:www.example.com;Path:/foo/
    - traefik.port=80
Run Code Online (Sandbox Code Playgroud)

有办法解决吗?

谢谢

reverse-proxy traefik

2
推荐指数
1
解决办法
3794
查看次数

Traefik 是否在其指标中显示实际的平均响应时间?

我的 Traefik Ingress DaemonSet 在其仪表板中显示了一些尴尬的指标。

这是对的吗?我真的怀疑我的平均响应时间是否超过了几分钟。

我想我做错了什么,但我不知道那是什么。

Traefik 仪表板

kubernetes traefik

2
推荐指数
1
解决办法
1280
查看次数

ForwardAuth 中间件在 Traefik 中无法作为 API 网关工作

我正在尝试将 Traefik 作为 API 网关运行,并希望使用以下 docker compose 文件来触发 ForwardAuth 中间件,但中间件的身份验证端点未被命中。我将它与本地主机一起使用。

version: '3'

services:
  reverse-proxy:
    image: traefik # The official Traefik docker image
    command: --api --docker # Enables the web UI and tells Traefik to listen to docker
    ports:
      - "80:80"     # The HTTP port
      - "8080:8080" # The Web UI (enabled by --api)
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
      - $PWD/traefik.toml:/traefik.toml     

  whoami:
    image: emilevauge/whoami
    labels:
      - traefik.enable=true
      - "traefik.frontend.rule=Host:whoami.docker.localhost"
      - "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
      - "traefik.http.middlewares.test-replacepath.replacepath.path=/foo" …
Run Code Online (Sandbox Code Playgroud)

docker traefik api-gateway

2
推荐指数
1
解决办法
1674
查看次数

Traefik:使用 Nginx 为 Django 应用程序提供静态内容

目前我正在尝试在我的服务器上运行 docker-compose 文件,我将在其中使用 traefik 和 Gunicorn 运行 django 应用程序。我当前的配置如下:

version: '3'

services:
  web:
    build:
      context: ./src
      dockerfile: dockerfiles-stage/Dockerfile
    command: gunicorn core.wsgi:application --workers 2 --threads 2 --bind 0.0.0.0:8000
    volumes:
      - static_volume:/code/static
      - ./src/logs/main/:/code/logs/
    expose:
      - 8000
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web.rule=Host(`mk.getalice.ai`)"
      - "traefik.http.routers.web.entrypoints=websecure"
      - "traefik.http.routers.web.tls.certresolver=myhttpchallenge"
    depends_on:
      - db
      - mongo
      - redis

  traefik:
    image: "traefik:v2.0.0-rc3"
    container_name: "traefik"
    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=kmehran.1106@gmail.com"
      - "--certificatesresolvers.myhttpchallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443" …
Run Code Online (Sandbox Code Playgroud)

nginx docker docker-compose traefik

2
推荐指数
1
解决办法
4044
查看次数

使用 Traefik 实现 Nomad 高可用性

我决定尝试一下 Nomad,并且正在为公司的副项目建立一个小型环境。

尽管 Nomad/Consul 的文档很好而且很详细,但它们并没有达到向世界公开一个小型 Web 服务的简单任务。

按照官方教程使用 Traefik 作为负载均衡器,如何使这些公开的服务可访问?

该教程有一个脚注,指出可以通过端口 8080 从集群外部访问服务。

但在拥有 3 个服务器和 3 个客户端的集群中,我应该将 DNS 指向哪里?具有指向 3 个客户端的故障转移功能的 DNS 是否足够?我还需要为客户端提供负载均衡器吗?

consul traefik nomad

2
推荐指数
1
解决办法
1941
查看次数

在 Docker 上使用 Traefik 允许 http 和 https

Traefik在我的 VPS 中使用它来将流量路由到我的网站,经过几个小时的摆弄,我终于成功地https使用 Le's Encrypt 让它工作。

现在,我需要做的一件事是也能够通过普通方式访问我的网站,http因为这是旧浏览器的一个爱好项目,我添加的唯一原因tls是 Firefox 不喜欢我的网站没有它。

问题是,使用我当前的配置,我可以https正常访问我的网站,但是当我尝试使用普通方式时,http我收到404错误。

这是我的配置docker-compose

version: "3"
services:
  traefik:
    image: "traefik:v2.5"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.teeresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.teeresolver.acme.email=me@gmail.com"
      - "--certificatesresolvers.teeresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "443:443"
      - "80:80"
      - "8080:8080"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    networks:
      - mywebsite
  # [...]
  mywebsite:
    image: my-web-site/site
    build:
      context: ~/mywebsite-runner/_work/my-web-site-php/my-web-site-php
      dockerfile: Dockerfile
    volumes: …
Run Code Online (Sandbox Code Playgroud)

ssl https http docker traefik

2
推荐指数
1
解决办法
4892
查看次数

Minio 安装在 Traefik 后面

我之前的版本(去年的)minio运行良好traefikportainer没有任何问题。我四天前尝试升级到新版本,但从那时起它就一直在走下坡路。我收到登录页面,但它不接受凭据;错误: {"code":500,"detailedMessage":"Post \"https://storage.example.com/\": dial tcp <ip>:443: i/o timeout","message":"invalid Login"} 我怀疑这与 TLS 证书有关。

下面是我的撰写文件,我已根据需要生成了证书;欢迎任何帮助:

 minio:
image: minio/minio
container_name: minio
restart: unless-stopped
command: server /data --certs-dir "./minio-data/certs" --address ":9000" --console-address ":9001"
networks:
  - traefik-proxy2
expose:
  - "9000"
  - "9001"
volumes:
  - ./minio-data:/data

environment:
  - "MINIO_ROOT_USER=love"
  - "MINIO_ROOT_PASSWORD=love1234"
  - "MINIO_BROWSER_REDIRECT_URL=https://stash.example.com"
  - "MINIO_SERVER_URL=https://storage.example.com"
labels:
  - "traefik.enable=true"
  - "traefik.http.services.minio.loadbalancer.server.port=9000"
  - "traefik.http.routers.minio.rule=Host(`storage.example.com`)"
  - "traefik.http.middlewares.minio-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.minio.middlewares=minio-https-redirect"
  - "traefik.http.routers.minio.entrypoints=https"
  - "traefik.http.routers.minio.service=minio"
  - "traefik.http.routers.minio.tls=true"
  - "traefik.http.routers.minio.tls.certresolver=http"
  - "traefik.http.services.minio-console.loadbalancer.server.port=9001"
  - "traefik.http.routers.minio-console.rule=Host(`stash.example.com`)"
Run Code Online (Sandbox Code Playgroud)

docker-compose minio traefik portainer

2
推荐指数
1
解决办法
7833
查看次数

带有路径匹配规则的traefik反向代理后面的Jenkins Docker容器

我有一个运行traefik反向代理的Docker容器,如下所示:

docker run \
  -d \
  --name traefik-reverse-proxy \
  --network="host" \
  -p 80:80 \
  -v /dev/null:/etc/traefik/traefik.toml \
  -v /var/run/docker.sock:/var/run/docker.sock \
  traefik:1.5-alpine \
    --docker
Run Code Online (Sandbox Code Playgroud)

然后,我使用Jenkins运行另一个容器,该容器通过标签配置转发规则,以便traefik将所有请求转发到其路径以开头的/jenkins

docker run \
  -d \
  --name jenkins \
  --label "traefik.port=8080" \
  --label "traefik.frontend.rule=PathPrefix: /jenkins" \
  jenkins/jenkins:lts
Run Code Online (Sandbox Code Playgroud)

现在,打开http://localhost/jenkins,请求已正确转发到Jenkins容器,该容器将我重定向到index.html主页。但是,该页面大部分为空白,因为未正确加载JavaScript和CSS资产。

查看浏览器控制台,可以看到索引页面正在尝试从http://localhost/static/4e9c623d/scripts/yui/button/button-min.js该设置中不存在的地址中加载它们。相反,它应该/jenkins/在URL中包含该部分并尝试从中加载它们,例如http://localhost/jenkins/static/4e9c623d/scripts/yui/button/button-min.js-手动点击该URL将在浏览器中显示JS文件。

我尝试使用类似的规则组合,--label "traefik.frontend.rule=PathPrefix: /jenkins; AddPrefix: /jenkins/"但这并没有改变任何内容。

我将如何编写规则以使其正常工作?

jenkins docker traefik

1
推荐指数
1
解决办法
2432
查看次数

启用TLS的反向代理(Traefik)后的Docker注册表-远程错误:错误的证书

所以我在这里做所有被Docker化的工作。Traefik和我的docker Registry实例一样都在容器中运行。如果我在注册表中单击,则可以从注册表中正常进行推/拉操作mydomain.com:5000/myimage

问题出在我尝试使用443击打它时mydomain.com/myimage。我在这里设置的是Traefik反向代理,在侦听443 mydomain.com,并将内部请求转发到:5000我的Registry实例。

当我从Traefik网址进行推/拉时,它挂起并倒数,等待在循环上重试。当我查看注册表的日志时,每一个我都可以看到实例IS实际上与反向代理Traefik通信,但是,我一遍又一遍地(在客户端的每次重试中)都遇到此错误:

2018/05/31 21:10:43 http: TLS handshake error from proxy_container_ip:port: remote error: tls: bad certificate

关于TLS问题,Docker Registry确实非常严格。由于我仍在开发中,因此我在这里使用所有自签名证书。知道是什么原因导致此错误吗?我假设Traefik代理检测到注册表提供的证书不可信(自签名),因此没有完成“推送”请求,反之亦然-发送注册表时,注册表返回到Traefik代理会检测到它不受信任。

如果需要,我可以提供其他信息。当前设置是Traefik和Registry都有自己的.crt和.key文件集。这两个(当然)都启用了TLS。

谢谢。

ssl reverse-proxy docker docker-registry traefik

1
推荐指数
1
解决办法
3135
查看次数

带有 Docker Stack 的 Traefik 没有检测到端口

我创建了一个我想使用 Docker 和 Traeffik 部署的网站。

当我手动部署服务时,一切都像魅力一样。

首先创建一个网络

docker network create --driver overlay traefik-net
Run Code Online (Sandbox Code Playgroud)

接下来创建 Traefik 服务

docker service create \
    --name traefik \
    --constraint=node.role==manager \
    --publish 80:80 --publish 8080:8080 \
    --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
    --mount type=bind,source=$PWD/traefik.toml,target=/etc/traefik/traefik.toml \
    --network traefik-net \
    traefik \
    --docker \
    --docker.swarmMode \
    --docker.domain=traefik \
    --docker.watch \
    --api
Run Code Online (Sandbox Code Playgroud)

最后,创建网站服务

docker service create \
    --name johanvergeer \
    --label traefik.port=4000 \
    --label traefik.frontend.rule='Host:johanvergeer.com' \
    --network traefik-net \
    registry.gitlab.com/johanvergeer/redgyro/site:latest
Run Code Online (Sandbox Code Playgroud)

对于配置,我创建了一个traefik.toml文件

[entryPoints]
  [entryPoints.http]
  address = ":80"

[docker]
    endpoint = "unix:///var/run/docker.sock" …
Run Code Online (Sandbox Code Playgroud)

docker traefik

1
推荐指数
1
解决办法
1881
查看次数