阿里云双十一优惠活动,点击链接进行购买: 一年仅需89元即可以购买服务器~。我个人服务器为2核4G配置,也更加推荐购买 2核4G三年799元 配置的服务器。
你可以跟着我的笔记 当我有一台服务器时,我做了什么 来开始维护服务器并搭建应用,将引导你使用 docker 和 k8s 搭建一个自己的服务器开发集群。

# 在 traefik 中为服务开通 https

https 已经成为一个现代网站的标配,以至于当一个网站没有 https 时,某些浏览器都会把它标识为不安全。而除了安全方面,https 对网站的SEO也影响很多,而对于某些新型的浏览器 API,也只有在 https 下才能使用。不管怎么说,https 也成为一个网站的刚需。

而当你使用了 traefik 作为反向代理时,你可以配置 ACME 自动为域名提供证书,只需几行即可解决问题。免费的证书,当然是通过 Let's Encrypt 来解决。

# ACME 配置

通过它可以很方便地自动签发证书并且自动续期,我们在 traefik.toml 中进行相关配置

[certificatesResolvers.le.acme]
  email = "xianger94@qq.com"
  storage = "acme.json"

  [certificatesResolvers.le.acme.tlsChallenge]

其中,storage 指存放证书的位置

# Traefik 容器配置

在配置好 traefik.toml 配置完成后,我们需要修改 traefik 容器启动的相关配置

  1. 暴露 443 端口
  2. 挂载 acme.json,持久化证书

由于 acme.json 是一个文件,我们现在宿主机中创建它

$ touch acme.json
$ docker-compose up

随后启动容器,配置文件如下

version: '3'

services:
  reverse-proxy:
    image: traefik:v2.0
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - ./traefik.toml:/etc/traefik/traefik.toml
      - ./acme.json:/acme.json
      - ./log:/log
      - /var/run/docker.sock:/var/run/docker.sock
    container_name: traefik
    env_file: .env
    labels:
      - "traefik.http.routers.api.rule=Host(`traefik.shanyue.local`)"
      - "traefik.http.routers.api.service=api@internal"

# 服务配置

如果你需要为你的服务提供 https 流量,只需要添加两行代码

labels:
  - traefik.http.routers.whoami.tls=true
  - traefik.http.routers.whoami.tls.certresolver=le

我们依然使用 whoami 做测试,docker-compose.yaml 文件内容如下

version: '3'

services:
  whoami:
    image: containous/whoami
    labels:
      - traefik.http.routers.whoami.rule=Host(`whoami.shanyue.tech`)
      - traefik.http.routers.whoami.tls=true
      - traefik.http.routers.whoami.tls.certresolver=le
    # environments:
    #   TMUX
    
networks:
  default:
    external:
      name: traefik_default

服务启动后,使用 curl 测试服务是否正常工作,我们可以看到 X-Forwarded-Protohttps,配置成功

$ curl https://whoami.shanyue.tech
Hostname: c9c3cc850e2b
IP: 127.0.0.1
IP: 172.18.0.2
RemoteAddr: 172.18.0.3:35320
GET / HTTP/1.1
Host: whoami.shanyue.tech
User-Agent: curl/7.29.0
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 59.110.159.217
X-Forwarded-Host: whoami.shanyue.tech
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: 9d783174aca9
X-Real-Ip: 59.110.159.217
Last Updated: 1/4/2020, 5:56:42 PM