阿里云优惠活动,点击链接进行购买: 一年仅需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, 9:56:42 AM