在localhost

时间:2018-06-15 15:08:39

标签: traefik

我希望在本地计算机上安装一个开发人员来更轻松地测试我的程序的新版本 - 它是一个服务器/客户端应用程序。客户端确实需要SSL,因此我希望将traefik作为使用自签名证书的(本地)服务器的代理。

我设法在没有SSL的情况下获得连接但是只要我启用HTTPS /重定向,traefik只响应“后端未找到”“/”0ms

根据我的浏览器,SSL证书有效。

这是我的设置:

traefik.toml

[docker]
watch = true
exposedByDefault = false

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

[accessLog]
[traefikLog]

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
      ca = "etc/traefik/ca.cert.pem"
      certFile = "/etc/traefik/dev-cert.pem"
      keyFile = "/etc/traefik/dev-key.nopass.pem"

# API definition
[api]
entryPoint = "traefik"
dashboard = true

搬运工-compose.yaml

version: '3'
services:
  edv-reverse-proxy:
    image: traefik
    container_name: edv-reverse-proxy
    expose:
      - 8080
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    volumes:
      - ./traefik/dev-cert.pem:/etc/traefik/dev-cert.pem
      - ./traefik/dev-key.nopass.pem:/etc/traefik/dev-key.nopass.pem
      - ./traefik/ca.cert.pem:/etc/traefik/ca.cert.pem
      - ./traefik/traefik.toml:/etc/traefik/traefik.toml
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - proxy

  whoami:
    image: emilevauge/whoami
    expose:
      - 80
    labels:
      - traefik.enable=true
      - "traefik.frontend.rule=Host:whoami.test"
      - traefik.port=80
    networks:
      - proxy

networks:
  proxy:
    external: true

的/ etc /主机

127.0.0.1       whoami.test

如果我禁用整个入口点部分,我可以使用whoami.test连接到服务。我尝试了很多不同的设置,似乎没有任何效果。

所以,如果有人知道如何解决这个问题,我会很高兴的!

2 个答案:

答案 0 :(得分:1)

字段顺序在toml中非常重要:

logLevel = "DEBUG" # <---
defaultEntryPoints = ["https", "http"] # <---

[accessLog]
[traefikLog]

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
      ca = "etc/traefik/ca.cert.pem"
      certFile = "/etc/traefik/dev-cert.pem"
      keyFile = "/etc/traefik/dev-key.nopass.pem"

# API definition
[api]
entryPoint = "traefik"
dashboard = true

[docker]
watch = true
exposedByDefault = false

答案 1 :(得分:1)

对于traefik v2.1默认路由器http到https重定向,您可以执行以下操作:

traefik:
    image: traefik:v2.1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - 80:80
      - 443:443
    labels:
      - "traefik.enable=true"
      ### Default HTTP Router
      - "traefik.http.routers.default-http2https.rule=HostRegexp(`{subdomain:[a-z,0-9]+}.example.com`)"
      - "traefik.http.routers.default-http2https.entrypoints=http"
      - "traefik.http.routers.default-http2https.middlewares=https-redirect@file"
      ### SSL
      - "traefik.http.routers.frontend.rule=Host(`traefik.example.com`)"
      - "traefik.http.routers.frontend.entrypoints=https"
      - "traefik.http.routers.frontend.tls.certresolver=example.com"
      - "traefik.http.routers.frontend.tls.domains[0].main=example.com"
      - "traefik.http.routers.frontend.tls.domains[0].sans=*.example.com"
      - "traefik.http.routers.frontend.service=api@internal"

我在这里找到了解决方法:https://docs.traefik.io/routing/routers/#rule