Caddy进阶-caddy进阶

前言

前面我们介绍了 Caddy 的入门用法,今天我们来介绍下 Caddy 的进阶用法,主要围绕 Caddyfile 来介绍反向代理,重定向,请求匹配等功能。

Caddy 支持将 Nginx 配置转为 Caddyfile

呆猫

反向代理

反向代理是什么?小穷子带着存折去找小柜子取钱,小柜子太忙就把卡给小箱子,让小箱子帮他处理。

反向代理-图片来自网络

关键点是用户未知。

正向代理是什么?小黄的儿子小紫要上学了,但是学校给报名,所以小黄去找教育局局长小绿让小绿带着小紫去学校报名。

正向代理-图片来自网络

关键点是用户已知,主观配置。

例子:假设我们想要搭建一个 Caddy 服务,通过访问这个服务可以反向代理到 PythonApp

localhost:8000
file_server
templates {
    mime .md text/html
}
reverse_proxy 127.0.0.1:9000

访问 8000 端口试试

反向代理效果

正常的,应该打开我们的首页,但是通过 Caddy 的反向代理,我们实际看到的是 Pythonhttp.server

如果你想通过 Caddy 去代理跨域的服务,在目的服务中将 Caddy 服务器加入白名单也是可以实现的。

重定向

重定向和反向代理的区别是,重定向是 Caddy 向浏览器发出重定向指定,实际客户端访问的是被重定向的服务器。而反向代理是 Caddy 帮主动将客户端的请求在内部进行处理,客户端不感知。

redir http://localhost:9000

访问8000端口,浏览器重定向到9000端口

内部重写

假设我们想要在 Caddy 服务器内部进行请求重写,我们可以这样做。

rewrite /rewrite /

访问rewrite,Caddy会重写到/

请求匹配器

实际在上面的内部重写例子中我们已经看到了请求匹配器的存在,其可以应用于 Caddy 的关于请求处理的所有地方,而且支持路径,命名等各中属性的匹配方式。

如内部重写例子,实际上 Caddy 托管的站点没有/rewrite 这个接口,但是我们通过请求匹配器可以拦截这个 URI,并且将其重写到/,这在请求拦截,请求处理,地址重写,重定向中有广泛的使用。

日志配置

当我们想要收集 Caddy 的日志时,我们可以向 Caddyfle 中加入以下配置即可。

log {
    output file log/access.log {
        roll_size 1gb
        roll_keep 5
        roll_keep_for 720h
    }
}

注意:Caddy 并不会自动创建目录和文件,需要我们自己创建。

日志效果

认证配置

当我们想要为我们的站点增加认证时,我们可以在 Caddyfile 中增加如下配置。

basicauth /* {
    phyger <hash-password>
}

以上,其中的<hash-password>是散列密码的 base64 编码。我们怎么获取散列密码的 base64 编码呢?最简单就是用 Caddy 客户端生成(亲测只有这种办法可行)。

密码生成

将如上截图中的代码替换掉 Caddyfile 中的<hash-password>即可。

启动认证的效果

此时,我们输入账号密码即可进入我们的站点。

版权声明:除特殊说明,博客文章均为phyger原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。来自:https://u1s1.vip/archives/105
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇