Request Matchers#
Request Matchers可以对请求头、请求路径、请求方法等进行匹配,从而进行限制访问、重定向、等操作。
例如针对不同的UA跳转到不同页面、针对某一路径的访问进行反代、WebDAV只读访问(限制请求方式)。
一些简单的例子#
WebDav只读#
在切换至Caddy2这篇提到过选装caddy-webdav
插件来做WebDAV服务器,默认情况下,WebDAV的用户权限跟着caddy运行的用户走,没有办法单独设置,而通过Request Matchers可以做到这点。
@forbidWrite {}
来命名Matcher,not method
对除GET
、HEAD
、OPTIONS
、PROPFIND
这些请求方式以外的进行匹配。
route @forbidWrite {}
对匹配到的请求返回403.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| example.com {
@forbidWrite {
not method GET HEAD OPTIONS PROPFIND
}
route @forbidWrite {
respond "Not allowed" 403
}
route {
basicauth /* {
user xxxxxxxxxxxxxxxxxxxxxx
}
webdav /* {
root /media
}
}
}
|
UA屏蔽并重定向#
UserAgent包含Firefox
反代到本地的页面,不包含则重定向到Github。
1
2
3
4
5
6
7
8
9
10
| example.com {
@firefox header user-agent *Firefox*
reverse_proxy @firefox http://127.0.0.1:1234
@notFirefox not {
header user-agent *Firefox*
}
redir @notFirefox https://github.com
}
|
匹配路径#
一般使用 *
进行全部匹配.
1
2
3
| example.com {
reverse_proxy * http://127.0.0.1:1234
}
|
子路径匹配。
1
2
3
| example.com {
reverse_proxy /api/* http://127.0.0.1:1234
}
|
- Request Matchers
- mholt/caddy-webdav/issues/27