48 lines
1.6 KiB
Markdown
48 lines
1.6 KiB
Markdown
# Nginx to Caddy Toolkit
|
|
|
|
Purpose: inventory an existing Nginx reverse-proxy setup and generate a first-pass Caddyfile for simple host/path proxying.
|
|
|
|
This module is intentionally conservative:
|
|
- it auto-converts common/basic patterns
|
|
- it flags complex directives for manual review
|
|
- it never edits live Nginx config
|
|
|
|
## Scripts
|
|
|
|
- `extract_nginx_inventory.sh`
|
|
- SSH into a host and collect `nginx -T`, `/etc/nginx` tarball, and a quick inventory summary.
|
|
- `nginx_to_caddy.sh`
|
|
- Convert basic Nginx server blocks into a generated Caddyfile.
|
|
- `Caddyfile.recommended`
|
|
- Hardened baseline config (security headers, sensible body limits, streaming behavior).
|
|
- `validate_caddy.sh`
|
|
- Run `caddy fmt`, `caddy adapt`, and `caddy validate` on the generated Caddyfile.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
cd setup/nginx-to-caddy
|
|
|
|
./extract_nginx_inventory.sh --host=<host> --user=<user> --port=22 --yes
|
|
./nginx_to_caddy.sh --input=./output/nginx-full.conf --output=./output/Caddyfile.generated --tls-mode=cloudflare --yes
|
|
./validate_caddy.sh --config=./output/Caddyfile.generated --docker
|
|
./validate_caddy.sh --config=./Caddyfile.recommended --docker
|
|
```
|
|
|
|
## Conversion Scope
|
|
|
|
Automatically handled:
|
|
- `server_name`
|
|
- `listen` (80/443 hints)
|
|
- `ssl_certificate`, `ssl_certificate_key`
|
|
- `return 301/302 ...`
|
|
- `location` + `proxy_pass` (simple prefix or exact path)
|
|
|
|
Manual follow-up required for:
|
|
- regex locations (`~`, `~*`)
|
|
- `rewrite`, `try_files`, `if`, `map`
|
|
- FastCGI/uWSGI/SCGI/gRPC backends
|
|
- auth subrequests, Lua, or advanced caching directives
|
|
|
|
See `USAGE_GUIDE.md` for a safe migration workflow.
|