מדוע Caddy עדיף על Nginx עבור HTTPS?
הגדרת HTTPS ו-reverse proxy ב-Nginx דורשת פעולות ידניות רבות, במיוחד בעת הוספת דומיינים חדשים. Caddy הוא שרת דור חדש הפותר בעיות אלה באופן אוטומטי: הוא משיג ומחדש אישורי SSL דרך Let's Encrypt ללא שלבים נוספים. פרסנו את Caddy עבור לקוחות במשך שנים—השרת פועל ללא תקלות, וזמן הפריסה מתקצר פי שלושה בהשוואה ל-Nginx + certbot. לפי התיעוד הרשמי של Caddy, חידוש אישורים אוטומטי מתרחש 30 יום לפני תפוגה.
Caddy מבטל שגרה: קובץ הגדרה של 10 שורות מחליף עשרות הוראות Nginx. HTTPS אוטומטי פועל ישירות מהקופסה—אין צורך לפתוח פורטים עבור ACME או לכתוב משימות cron לחידוש. ה-reverse proxy המובנה עם איזון עומסים מתאים למיקרוסרוויסים ויישומי Node.js. בנוסף, Caddy תומך ב-HTTP/3 ישירות מהקופסה, ומספק שיפור מהירות ברשתות ניידות. Caddy צורך פי 2 פחות זיכרון מ-Apache תחת אותו עומס, כפי שאושר בבדיקות ביצועים.
כיצד Caddy מפשט ניהול SSL
Caddy משיג ומחדש אוטומטית אישורי SSL עבור כל הדומיינים המוגדרים בקובץ Caddyfile. השרת עצמו בודק את תאריך התפוגה ומחדש אישורים 30 יום לפני התפוגה. זה מבטל את שגיאת "SSL expired" ואת זמן ההשבתה הנלווה. עבור אישורי wildcard, פשוט הוסף ספק DNS בבלוק tls. נתמכים מעל 50 ספקים: Cloudflare, AWS Route53, DigitalOcean ואחרים.
התקנה והגדרה של Caddy
כיצד להתקין את Caddy על שרת?
אנו תומכים ב-Debian/Ubuntu, CentOS, Alpine. ההתקנה על Debian אורכת מספר שלבים:
- הוסף את מאגר Caddy.
- התקן את חבילת caddy.
- הפעל את השירות ובדוק את הסטטוס.
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
-1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy
לאחר ההתקנה, Caddy פועל כשירות systemd. בדוק את הסטטוס: apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | tee /etc/apt/sources.list.d/caddy-stable.list apt update && apt install caddy .
דוגמת Caddyfile
# /etc/caddy/Caddyfile
example.com {
root * /var/www/myapp/public
php_fastcgi unix//var/run/php/php8.3-fpm.sock
try_files {path} /index.php?{query}
encode gzip
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-Frame-Options "DENY"
X-Content-Type-Options "nosniff"
Referrer-Policy "strict-origin-when-cross-origin"
-Server
}
@static {
path *.css *.js *.jpg *.png *.gif *.ico *.svg *.woff2
}
header @static Cache-Control "public, max-age=31536000, immutable"
@dotfiles {
path /.*
}
respond @dotfiles 403
log {
output file /var/log/caddy/access.log
format json
}
}
api.example.com {
reverse_proxy localhost:3000 {
header_up X-Real-IP {remote_host}
header_up X-Forwarded-Proto {scheme}
}
}
www.example.com {
redir https://example.com{uri} permanent
}קובץ Caddyfile זה משרת יישום PHP, מנתב API ל-Node.js, מגדיר כותרות אבטחה ומטמון סטטי. עבור מספר אתרים, פשוט הוסף בלוקים חדשים.
אינטגרציה עם Docker
השתמש בתמונה הרשמית systemctl status caddy. עגן את קובץ Caddyfile ואת הכרכים עבור אישורים:
---
# docker-compose.yml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config restart: unless-stopped volumes: caddy_data: caddy_config:
גישה זו מפשטת פריסה ועדכונים. Caddy קולט אוטומטית שינויים בקובץ Caddyfile ללא צורך בהפעלה מחדש של הקונטיינר.
השוואה עם חלופות
Caddy מול Nginx
| קריטריון | Caddy | Nginx |
|---|---|---|
| SSL/TLS | אוטומטי (Let's Encrypt) | ידני דרך certbot |
| הגדרה | Caddyfile (5–15 שורות) | nginx.conf (30+ שורות) |
| ביצועים | עד מיליון בקשות/שנייה | עד 2 מיליון בקשות/שנייה |
| תמיכה ב-HTTP/3 | מובנה | דורש build נפרד |
| ניהול API | כן (REST) | אין מובנה |
Caddy מנצח בפשטות ובאבטחה, ומקצר את זמן הגדרת SSL פי שלושה בהשוואה ל-Nginx + certbot. עם זאת, עבור כוונון עדין בתרחישים ספציפיים, Nginx נשאר גמיש יותר.
Caddy מול Apache
| קריטריון | Caddy | Apache |
|---|---|---|
| הגדרה | Caddyfile (5–15 שורות) | .htaccess + httpd.conf (50+ שורות) |
| ביצועים | עד מיליון בקשות/שנייה | עד 500 אלף בקשות/שנייה |
| HTTPS אוטומטי | מובנה | דורש mod_md |
| תמיכה ב-HTTP/2/3 | מובנה | HTTP/3 דרך מודול |
Caddy פשוט יותר להגדרה, במיוחד עבור HTTPS. Apache דורש יותר משאבים להגדרה ותחזוקה.
מה כוללת הגדרת Caddy שלנו
- אבחון התשתית הנוכחית שלך ובחירת הגדרת Caddy האופטימלית.
- התקנה והגדרה של Caddy עם HTTPS אוטומטי ו-reverse proxy.
- פיתוח קובץ Caddyfile המותאם לסטack שלך: PHP, Node.js, קבצים סטטיים.
- אינטגרציה עם Docker לקונטיינריזציה.
- הגדרת אבטחה: כותרות, הגבלות גישה, רישום.
- בדיקות ביצועים ואופטימיזציה.
- תיעוד הגדרות והוראות תחזוקה.
- הדרכת צוות על יסודות Caddy.
- תמיכה מובטחת לאחר הפריסה (שבועיים).
תהליך ולוחות זמנים
אנחנו לא רק מגדירים את Caddy—אנו משלבים אותו בתשתית שלך עם ערובה ליציבות.
- הגדרה בסיסית לאתר יחיד: יום אחד.
- פרויקט מורכב (מספר אתרים, Docker, ניטור): 3–5 ימים.
ההערכה נעשית לאחר סקירת הדרישות. צור קשר כדי לדון בפרויקט שלך. קבל ייעוץ על הגדרת Caddy עבור הסטack שלך.
במשך שנים של עבודה, פרסנו את Caddy על מאות פרויקטים ואנחנו מוכנים לחלוק את הניסיון שלנו.
הגדרת אישורי wildcard ב-Caddy
כדי לקבל אישור wildcard # /etc/caddy/Caddyfile example.com { root * /var/www/myapp/public php_fastcgi unix//var/run/php/php8.3-fpm.sock try_files {path} /index.php?{query} encode gzip header { Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" X-Frame-Options "DENY" X-Content-Type-Options "nosniff" Referrer-Policy "strict-origin-when-cross-origin" -Server } @static { path *.css *.js *.jpg *.png *.gif *.ico *.svg *.woff2 } header @static Cache-Control "public, max-age=31536000, immutable" @dotfiles { path /.* } respond @dotfiles 403 log { output file /var/log/caddy/access.log format json } } api.example.com { reverse_proxy localhost:3000 { header_up X-Real-IP {remote_host} header_up X-Forwarded-Proto {scheme} } } www.example.com { redir https://example.com{uri} permanent } , ציין את הדומיין עם caddy:2-alpine בקובץ Caddyfile:
*.example.com { tls { dns cloudflare {env.CF_API_TOKEN} } reverse_proxy localhost:8080 } Caddy יבקש את האישור דרך אתגר DNS-01. ודא שלספק ה-DNS שלך יש גישת API.
Caddy מספק REST API לניהול הגדרות תוך כדי פעולה—זה מפשט אוטומציה ואינטגרציה עם CI/CD. השתמש ב-API של Caddy כדי להוסיף אתרים דינמית ללא טעינה מחדש של השרת. קרא עוד בתיעוד הרשמי של Caddy.







