我们在开发中,会经常用到反向代理,它可以把一个网络请求转发到上游。比如你写了一个Go语言的API,那么就可以通过反向代理的方式,把API暴露给调用者。

Nginx支持反向代理,性能也不错,那么使用Caddy如何配置反向代理呢?

反向代理入门

我在前面的文章 Caddy实战(一)| 托管你的网站,只需一行命令 中提到,通过一个命令就可以非常简单的配置一个反向代理。

1
$ caddy reverse-proxy --to 127.0.0.1:9000

就是这么简单, 以上命令表示把访问localhost的网络请求,都代理给127.0.0.1:9000这个服务处理。 当然也可以使用Caddyfile来配置反向代理,如下所示:

1
2
localhost
reverse_proxy 127.0.0.1:9000

这个配置的效果和上面的命令行启动是一样的。

注意:以上示例,都是把https://localhost/ 的请求代理到127.0.0.1:9000 。

以上http默认的是80端口,https默认的是443端口。当然,我们也可以换个端口,比如2016.

1
2
:2016
reverse_proxy 127.0.0.1:9000

是不是比Nginx的反向代理配置简单多了。

代理匹配的请求

caddy作为一个强大的web服务器,其反向打理功能肯定不止以上这么简单。比如,我们不想代理全部的网络请求,而是只想代理匹配的怎么做呢?比如代理 /api 这个Path下的。

1
2
3
reverse_proxy /api/*  {
	to 127.0.0.1:9000
}

从以上示例可以看到,只需要在 reverse_proxy 指令后,加 /api/* 这个match即可,这和Nginx的 location 是非常相似的。

代理到多个上游服务

为了高可用,上游服务我们会部署多少,这样当一个有问题的时候,不会影响产品功能。下面我们看下Caddy是如何实现这一能力的。

1
reverse_proxy node1:80 node2:80 node3:80

这样就会所有的请求,随机的反向代理到这三个node节点上了。 当然我们还可以这样配置:

1
2
3
reverse_proxy /api/*  {
	to node1:80 node2:80 node3:80
}

当同时配置多个反向代理服务的时候,就有了负载均衡了。以上默认的情况下,是随机的,也就是caddy会随机的选择一个上游服务使用。

小结

这一篇主要讲了Caddy反向代理的使用,比如如何配置一个反向代理、如何匹配特定的请求,如何代理到多个上游服务,你可以自己配置练习一下,如果你有Nginx基础相信会更容易,因为Caddy的配置比Nginx更简单。

下一篇,主要为你详细分享Caddy反向代理的负载均衡。

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站asf http://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「好看」,感谢支持。

扫码关注