Caddy2使用Request matchers过滤请求、设置权限的一些例子
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.
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。
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
}
匹配路径
一般使用 *
进行全部匹配.
example.com {
reverse_proxy * http://127.0.0.1:1234
}
子路径匹配。
example.com {
reverse_proxy /api/* http://127.0.0.1:1234
}