nginx和traefik都可以做ingress,在入口处做证书的卸载,并转发tcp、udp、https、http流量

nginx是比较通常的做法,traefik配置比较简单,尤其是配置自动续签的证书

wget https://github.com/traefik/traefik/releases/download/v2.4.8/traefik_v2.4.8_linux_amd64.tar.gz

解压释放出来traefik文件,建立目录/export/servers/traefik

结构如下:

traefik.yml

log:
  level: DEBUG

api:
  insecure: false
  dashboard: true

entryPoints:
  http:
    address: ":80"
    #http:
    #  redirections:
    #    entryPoint:
    #      to: https
    #      scheme: https

  https:
    address: ":443"



certificatesResolvers:
  letsEncrypt:
    acme:
      storage: /export/servers/traefik/acme.json
      email: zhangranrui@rendoumi.com
      tlsChallenge: {}
      httpChallenge:
        entryPoint: http

providers:
  file:
    directory: /export/servers/traefik/dynamic
    watch: true

上面我们定义了log的level为DEBUG,并且开放了dashboard

定义了2个入口,http和https,可以直接用中间件强制http跳转https

然后定义了letsEncrypt的证书机构

最后定义了动态监控 /export/servers/traefik/dynamic 目录,如果下面有增加文件会自动更新配置。

然后再dynamic目录下定义转发routes

注意命名文件,test7是域名,01是序列号,文件内容中svc的序列号最好跟文件名一致,如果多文件重复会导致配置不可用!!!

test7-01.yml

http:
  routers:
    https_01:
      rule: "Host(`test7.ddky.com`)"
      service: svc_01
      tls:
        certresolver: letsEncrypt

    http:
      rule: "Host(`test7.ddky.com`)"
      service: svc_01
      entryPoints:
        - http

  services:
    svc_01:
      loadBalancer:
        servers:
          - url: "http://172.16.8.1:80"

test8-02.yml

http:
  routers:
    https_02:
      rule: "Host(`test8.ddky.com`)"
      service: svc_02
      tls:
        certresolver: letsEncrypt

    http_02:
      rule: "Host(`test8.ddky.com`)"
      service: svc_02
      entryPoints:
        - http

  services:
    svc_02:
      loadBalancer:
        servers:
          - url: "http://172.18.31.33:80"

dashboard.yml

http:
  routers:
    api-router:
      rule: "PathPrefix(`/api`) || PathPrefix(`/dashboard`)"
      service: api@internal
      entryPoints:
        - http
      middlewares:
        - dashboard-login

  middlewares:
    dashboard-login:
      basicAuth:
        users:
          - "admin:$apr1$u1xEoYqW$V5O5t4rmdly58WqS4nTVq1"

打开http://192.168.85.202/dashboard/#/

user: admin pass: xxxxxxxx

这样就可以了