反向代理的基础配置
example.miaoo.net { encode gzip tls { protocols tls1.2 tls1.3 } reverse_proxy * https://source.example.com { header_up Host source.example.com header_up X-Real-IP {remote_host} transport http { tls_insecure_skip_verify } } }
- HTTPS 反向代理的两种方案
方案一:保持 SSL(端到端加密)
# 适合跨网络、需要安全传输的场景 reverse_proxy https://backend { transport http { tls_insecure_skip_verify } }
方案二:SSL 终止
# 适合内网环境 reverse_proxy http://backend:80
性能优化配置
example.miaoo.net { encode gzip zstd header { Cache-Control "public, max-age=3600" Strict-Transport-Security "max-age=31536000" X-Content-Type-Options "nosniff" X-Frame-Options "SAMEORIGIN" } reverse_proxy * https://backend { transport http { tls_insecure_skip_verify dial_timeout 10s keepalive 30s keepalive_idle_conns 100 } } }
- 常见问题解决:
白屏问题:
- 检查 Host 头配置
- 确认 TLS 证书设置
- 验证源站可访问性
权限问题:
mkdir -p /var/log/caddy chown -R caddy:caddy /var/log/caddy chmod 755 /var/log/caddy
调试和维护命令:
# 验证配置 caddy validate --config /etc/caddy/conf.d/site.conf --adapter caddyfile # 查看服务状态 systemctl status caddy # 查看日志 journalctl -u caddy -f # 重启服务 systemctl restart caddy
多站点管理(LCMP 环境):
/etc/caddy/ ├── Caddyfile # 主配置 └── conf.d/ # 子配置目录 ├── site1.conf ├── site2.conf └── example.conf
- 可选的高级功能:
监控:
metrics /metrics # Prometheus 监控
限速:
rate_limit { zone dynamic 10m rate 100r/m }
错误页面:
handle_errors { rewrite * /error.html file_server }
- 安全建议:
- 总是启用 TLS 1.2/1.3
- 配置适当的安全头
- 在跨网络传输时保持 SSL
- 限制敏感路径访问
记住:配置变更前务必先验证配置,保持日志监控,做好备份。这样可以在出现问题时快速定位和恢复。
评论 (1)