Caddy 實戰(五)- 配置反向代理

我們在開發中,會經常用到反向代理,它可以把一個網絡請求轉發到上游。比如你寫了一個 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/ ,第一時間看後續精彩文章。覺得好的話,請猛擊文章右下角「在看」,感謝支持。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/DbEsZHDq-nESRYtyGgf5Qw