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
