点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章
我们在开发中,会经常用到反向代理,它可以把一个网络请求转发到上游。比如你写了一个Go语言的API,那么就可以通过反向代理的方式,把API暴露给调用者。
Nginx支持反向代理,性能也不错,那么使用Caddy如何配置反向代理呢?
反向代理入门
我在前面的文章 Caddy实战(三)| Caddyfile 快速入门中提到,通过一个命令就可以非常简单的配置一个反向代理。
$ caddy reverse-proxy --to 127.0.0.1:9000
就是这么简单, 以上命令表示把访问localhost的网络请求,都代理给127.0.0.1:9000这个服务处理。
当然也可以使用Caddyfile来配置反向代理,如下所示:
localhost
reverse_proxy 127.0.0.1:9000
这个配置的效果和上面的命令行启动是一样的。
注意:以上示例,都是把https://localhost/ 的请求代理到127.0.0.1:9000 。
以上http默认的是80端口,https默认的是443端口。当然,我们也可以换个端口,比如2016.
:2016
reverse_proxy 127.0.0.1:9000
是不是比Nginx的反向代理配置简单多了。
代理匹配的请求
caddy作为一个强大的web服务器,其反向打理功能肯定不止以上这么简单。比如,我们不想代理全部的网络请求,而是只想代理匹配的怎么做呢?比如代理 /api
这个Path下的。
reverse_proxy /api/* {
to 127.0.0.1:9000
}
从以上示例可以看到,只需要在 reverse_proxy
指令后,加 /api/*
这个match即可,这和Nginx的 location
是非常相似的。
代理到多个上游服务
为了高可用,上游服务我们会部署多少,这样当一个有问题的时候,不会影响产品功能。下面我们看下Caddy是如何实现这一能力的。
reverse_proxy node1:80 node2:80 node3:80
这样就会所有的请求,随机的反向代理到这三个node节点上了。
当然我们还可以这样配置:
reverse_proxy /api/* {
to node1:80 node2:80 node3:80
}
当同时配置多个反向代理服务的时候,就有了负载均衡了。以上默认的情况下,是随机的,也就是caddy会随机的选择一个上游服务使用。
小结
这一篇主要讲了Caddy反向代理的使用,比如如何配置一个反向代理、如何匹配特定的请求,如何代理到多个上游服务,你可以自己配置练习一下,如果你有Nginx基础相信会更容易,因为Caddy的配置比Nginx更简单。
下一篇,主要为你详细分享Caddy反向代理的负载均衡。
本文为原创文章,转载注明出处,欢迎扫码关注公众号
flysnow_org
或者网站 https://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。
—— 精彩推荐 ——
扫码关注
分享、点赞、在看就是最大的支持
文章评论