Caddy是一个轻量级的服务器容器,使用golang编写,使用十分方便,支持以下特性:
- HTTP/2
- Automatic HTTPS
- Easy Deployment
- Multi-core
- Markdown
- WebSockets
- IPv6
- Logging
- FastCGI
- Headers
- Reverse Proxy
- Rewrites & Redirects
- Clean URLs
- Gzip
- Directory Browsing
- Virtual Hosts
Caddy使用时仅运行一个可执行文件,并通过Caddyfile文件进行配置,下面将对其各个功能进行介绍。
The Caddyfile
Caddyfile是Caddy运行时的配置文件,若与caddy在同一目录下可以默认查找到,如果不在同一个目录下,可通过指令caddy -conf="/path/to/Caddyfile"
进行配置
basicauth
basicauth实现了http的基本权限认证功能,这个功能可以使用账号和密码来保护文件或文件夹。需要注意的是这种方法在纯html中是不安全的,所以在使用时要慎重。
在Caddyfile中的指令是:
- path 需要保护的文件名或者文件夹的名字
- username 用户名
- password 密码
需要保护特定多文件或文件夹时使用如下指令:
|
|
- resources 每行一个文件或者文件夹
browse
browse支持对特定文件路径下的文件进行文件浏览,指令如下:
- path 浏览的根路径
- tplfile 使用的模板文件,用于显示文件树
支持获取json格式的返回,示例如下:
|
|
errors
errors 允许自定义错误界面和制定log文件地址
Examples
|
|
|
|
|
|
internal
internal 可以隔离特定文件夹,避免被外部访问到,访问的请求将会收到一个404 的返回。
但是允许特定的设置的代理访问这些资源,这种模式可以允许一个反向代理进行登陆,授权等操作。
指令
- path 是保护资源的根目录
Examples
ipfilter
用于通过客户ip来禁止或者允许访问。此功能基于国家代号,所以需要一份 MaxMind’s GeoLite2 Country database 的拷贝。
指令
- paths… 是一系列空的根文件夹,需要进行ip判断,用空格隔开
- rule 白名单 黑名单模式
- ip… ip或者ip范围
- country… 国家IOS码 空格隔开
- db_path 地理ip数据库,只有当county使用时才需要
- block_page 被禁止ip访问返回页面
- strict 。。。一般不用
Examples
只支持一个ip地址的访问
限制两个ip段的地址的访问和一个特定地址的访问,并且显示default.html
仅允许两个来自法国的ip进行访问