什么是反向代理
服务本身对服务器以外的用户不可见,用户需要通过代理服务器访问处于服务器内部的服务,这种行为模式就叫反向代理。与之相对的是正向代理:用户通过代理服务器访问代理服务器可访问的内容。
当下热门的微服务架构,很适合使用反向代理把对不同子域名的请求转发到不同的服务后端。
常用的反向代理
常用的反向代理有老牌的HAProxy、Nginx等。也有现在已经推出2.0版本的使用Go语言编写的后起之秀traefik。
traefik试用
本域名下的所有服务都运行在同一个服务器下,使用docker容器进行隔离,并使用traefik作为反向代理服务器。
这里主要参考traefik官方文档搭建服务。
在docker上使用traefik
启动一个traefik容器,并设置端口转发。其中,通过命令行参数--api.insecure=true
开启不需要认证的统计后台,通过命令行参数--providers.docker
指定服务后端为docker。
|
|
这时候已经可以通过ip:8080访问到traefik的统计后台了。
反向代理示例
本blog使用Hugo构建,生成的静态文件我使用Nginx作为Web服务来呈现。这里我的需求比较简单,就是让blog可以通过www.joyqat.top
和joyqat.top
两个域名进行访问,其他的子域名即使设置了相同的DNS解析,也不能访问到本blog。常规的做法是使用Nginx直接配置验证域名,这里我使用traefik配置反向代理的方法实现。当然,nginx也要使用docker来启动。
|
|
大功告成。此时可以通过traefik的统计后台看到已经配置的反向代理详情。