用Caddy替换Nginx的静态站迁移实录
把跑了两年的Nginx静态站迁到Caddy,起因是每次续签Let's Encrypt证书都要手动改配置并reload,而Caddy能自动完成签发与续期。做法:先用caddy adapt把现有server块转成Caddyfile作对照,再手写站点配置,用root指向静态目录、file_server开启目录服务、encode gzip zstd压缩、header设置缓存与安全头,最后加handle_errors自定义404。坑有两个:一是Caddy默认以caddy用户运行,站点目录权限不足导致403,改成目录组可读并给caddy组授权才通;二是原有的rewrite规则顺序在Caddy里被handle块重新排序,伪静态页面一度502,改用try_files等价写法后恢复。上线后证书自动续期正常,配置从80行降到30行,内存占用也更低。结论:纯静态站迁Caddy收益明显,但迁移前务必逐条核对rewrite与权限。
把跑了两年的Nginx静态站迁到Caddy,起因是每次续签Let's Encrypt证书都要手动改配置并reload,而Caddy能自动完成签发与续期。做法:先用caddy adapt把现有server块转成Caddyfile作对照,再手写站点配置,用root指向静态目录、file_server开启目录服务、encode gzip zstd压缩、header设置缓存与安全头,最后加handle_errors自定义404。坑有两个:一是Caddy默认以caddy用户运行,站点目录权限不足导致403,改成目录组可读并给caddy组授权才通;二是原有的rewrite规则顺序在Caddy里被handle块重新排序,伪静态页面一度502,改用try_files等价写法后恢复。上线后证书自动续期正常,配置从80行降到30行,内存占用也更低。结论:纯静态站迁Caddy收益明显,但迁移前务必逐条核对rewrite与权限。