[Caddy2] The Caddy Web Server 常见 Caddyfile 模式
Caddyfile 是 JSON 配置的易用写法,支持通常用的功能,完整功能还是需要 JSON 配置的。
以下适用于 Caddy2 版本的配置。
静态文件服务器
example.com root * /var/www file_server
通常第一行是站点地址,root 代表站点根路径,* 代表访问所有路径,也可以匹配其它路径,后面跟文件位置,最后开启文件服务器。
反向代理
代理所有请求:
example.com
reverse_proxy localhost:5000
代理 /api/ 路径的请求到指定地址,并开启静态文件服务器:
example.com root * /var/www reverse_proxy /api/* localhost:5000 file_server
PHP
在运行 PHP FastCGI 的服务下,适用大多数 PHP 应用:
example.com root * /var/www php_fastcgi /blog/* localhost:9000 file_server
自定义站点路径 * 和访问路径 /blog/*,本例假定所有 PHP 请求路径为 /blog/*,其它请求以静态文件服务。
php_fastcgi 实际上是一系列 扩展配置 的简写方式,如果 php_fastcgi 不适用你的站点,请参考扩展配置进行修改。
php_fastcgi 是为 PHP 应用量身定制的,针对单入口 index.php 而设计。
重定向 www. 子域
添加 www. 到 HTTP 重定向中:
example.com { redir https://www.example.com{uri} } www.example.com { }
移除 www. 通过重定向到主域:
www.example.com { redir https://example.com{uri} } example.com { }
末尾斜线
通常不需要自己配置,file_server 会根据访问的资源是 文件 还是 目录 自动添加和删除末尾斜线。
如果你需要,依然可以通过配置强制使用斜线,有两种方式:内部和外部。
内部强制,通过 rewrite 指令,重写加上或删除末尾斜线。
example.com rewrite /add /add/ rewrite /remove/ /remove
通过 rewrite 方式,带有斜线和不带斜线的请求是一样的。
外部强制,通过 redir 指令,Caddy 会让浏览器改变 URL 来加上和删除斜线。
example.com redir /add /add/ redir /remove/ /remove
使用重定向,客户端将必须重新发起请求,强制使用一个可接受 URL 的资源。
Caddyfile 结构,Caddyfile 指令,Request Matchers,Global Options,Common Patterns