Please enable Javascript to view the contents

traefik初体验

 ·   ·  ☕ 2 分钟  ·  ✍️ joyqat

什么是反向代理

服务本身对服务器以外的用户不可见,用户需要通过代理服务器访问处于服务器内部的服务,这种行为模式就叫反向代理。与之相对的是正向代理:用户通过代理服务器访问代理服务器可访问的内容。

反向代理

当下热门的微服务架构,很适合使用反向代理把对不同子域名的请求转发到不同的服务后端。

常用的反向代理

常用的反向代理有老牌的HAProxy、Nginx等。也有现在已经推出2.0版本的使用Go语言编写的后起之秀traefik。

traefik试用

本域名下的所有服务都运行在同一个服务器下,使用docker容器进行隔离,并使用traefik作为反向代理服务器。
这里主要参考traefik官方文档搭建服务。

在docker上使用traefik

启动一个traefik容器,并设置端口转发。其中,通过命令行参数--api.insecure=true开启不需要认证的统计后台,通过命令行参数--providers.docker指定服务后端为docker。

1
2
3
4
docker run -d --restart always --name traefik \
  -p 80:80 -p 443:443 -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  traefik:v2.0 --api.insecure=true --providers.docker

这时候已经可以通过ip:8080访问到traefik的统计后台了。

反向代理示例

本blog使用Hugo构建,生成的静态文件我使用Nginx作为Web服务来呈现。这里我的需求比较简单,就是让blog可以通过www.joyqat.topjoyqat.top两个域名进行访问,其他的子域名即使设置了相同的DNS解析,也不能访问到本blog。常规的做法是使用Nginx直接配置验证域名,这里我使用traefik配置反向代理的方法实现。当然,nginx也要使用docker来启动。

1
2
3
4
docker run -d --restart always --name nginx \
  -v /root/static:/usr/share/nginx/html:ro \ 
  -l "traefik.http.routers.index.rule=Host(\`www.joyqat.top\`) || Host(\`joyqat.top\`)" \
  nginx:alpine

大功告成。此时可以通过traefik的统计后台看到已经配置的反向代理详情。

traefik统计后台
分享
您的鼓励是我最大的动力
alipay QR Code
wechat QR Code

joyqat
作者
joyqat