ویرگول
ورودثبت نام
ArashZich
ArashZichیه برنامه نویس که بیشتر توئیت میکنه
ArashZich
ArashZich
خواندن ۳ دقیقه·۳ ماه پیش

خداحافظ Nginx؟ بیایید با Caddy آشنا شیم!

احتمالاً شما هم مثل من، هر وقت حرف از وب سرور و راه اندازی سایت میاد، اولین چیزی که به ذهنتون میرسه Nginx هست. از Nginx همه جا تعریف میکنن و خب، واقعاً هم کارش درسته. اما امروز میخوام در مورد یه جایگزین خیلی ساده و مدرن باهاتون صحبت کنم : Caddy!

خود من تا چند وقت پیش همه کارهام رو با Nginx انجام میدادم، اما از وقتی با Caddy آشنا شدم، دیگه سمت هیچ چیز دیگه ای نرفتم. بذارید خیلی خودمونی بگم چرا.

چرا اصلاً Caddy؟ مگه Nginx چش بود؟

هیچی! Nginx عالیه، قدرتمنده، ولی بعضی وقتا یه کم زیادی پیچیده ست. برای فعال کردن HTTPS روی Nginx باید کلی با certbot و فایل های کانفیگ سر و کله بزنیم و حواسمون به تمدید گواهینامه ها هم باشه!

خب، بزرگترین و خفنترین ویژگی Caddy اینه: HTTPS خودکار و پیشفرض!

Caddy خودش به طور اتوماتیک برای دامنه های شما گواهینامه SSL/TLS از Let's Encrypt میگیره و خودش هم تمدیدش میکنه. یعنی شما فقط آدرس دامنه تون رو بهش میدید! دیگه خبری از کانفیگ های پیچیده و دستورات certbot نیست.

مزایای دیگه Caddy:

  • کانفیگ فوق العاده ساده: فایل کانفیگ Caddy (که بهش Caddyfile میگن) خیلی ساده و خواناست. خبری از براکت های تو در تو و دستورات عجیب و غریب نیست.

  • عملکرد عالی: با اینکه ساده ست، اما خیلی پرقدرت و سریعه. خیالتون از بابت پرفورمنس راحت باشه.

  • نوشته شده با Go: این یعنی یه فایل باینری ساده به شما میده، بدون هیچ وابستگی خاصی. کپی و اجرا میکنید!

  • پشتیبانی از HTTP/3: خیلی راحت و بدون دردسر میتونید جدیدترین نسخه HTTP رو فعال کنید.

  • Reverse Proxy ساده: راه انداختن ریورس پراکسی باهاش آب خوردنه.

چطوری نصبش کنیم؟

نصب کردنش از کانفیگ کردنش هم راحتتره. اگه روی سرور اوبونتو یا دبیان هستید، این دستورات رو بزنید:

Bash

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy

با این دستورات، Caddy به عنوان یک سرویس روی سیستم شما نصب میشه. یعنی خودش با روشن شدن سرور اجرا میشه و ری استارت میشه.

Caddyfile: چطوری ازش استفاده کنیم؟

خب، رسیدیم به قسمت جذاب ماجرا. Caddy یه فایل کانفیگ اصلی داره به اسم Caddyfile که توی مسیر /etc/caddy/Caddyfile قرار داره. بیایید چند تا مثال خیلی رایج رو با هم ببینیم.

مثال ۱: راه انداختن یک سایت استاتیک (HTML/CSS/JS)

فرض کنید شما یه سایت ساده دارید که فایل هاش توی پوشه /var/www/my-site قرار داره و میخواید روی دامنه example.com بالا بیاد.

فایل /etc/caddy/Caddyfile رو باز کنید (با sudo nano /etc/caddy/Caddyfile) و این رو داخلش بنویسید:

example.com { root * /var/www/my-site file_server }

تموم شد! به همین سادگی. حالا فقط کافیه سرویس Caddy رو ری استارت کنید:

Bash

sudo systemctl reload caddy

حالا اگه دامنه example.com رو به IP سرور وصل کرده باشید، Caddy خودش میره گواهی SSL میگیره و سایت شما رو روی https://example.com بالا میاره. خداحافظ http!

مثال ۲: ریورس پراکسی (Reverse Proxy)

این یکی دیگه از اون کاراییه که همه ما هر روز انجام میدیم. مثلاً یه اپلیکیشن Node.js دارید که روی پورت 3000 در حال اجراست و میخواید از طریق دامنه api.example.com بهش دسترسی داشته باشید.

کافیه این بلاک رو به Caddyfile اضافه کنید:

api.example.com { reverse_proxy localhost:3000 }

و دوباره:

Bash

sudo systemctl reload caddy

همین! الان Caddy تمام درخواست هایی که به api.example.com میاد رو میفرسته برای اپلیکیشن شما روی پورت 3000 و البته، اینجا هم HTTPS خودکار فعاله.

حرف آخر

قصد من از این نوشته این نیست که بگم Nginx بده. Nginx هنوزم یه ابزار فوق العاده قدرتمنده، مخصوصاً برای سناریوهای خیلی پیچیده.

اما واقعیت اینه که برای ۹۰٪ کارهای روزمره ما، مثل بالا آوردن یه سایت وردپرسی، یه اپ جنگو یا لاراول، یه برنامه Node.js یا حتی یه سایت استاتیک ساده، Caddy نه تنها کافیه، بلکه کار رو به شدت سریعتر و لذت بخش تر میکنه. اون سادگی و قابلیت HTTPS خودکارش چیزیه که وقتی بهش عادت کنید، دیگه نمیتونید ازش دل بکنید.

پیشنهاد میکنم حتماً توی پروژه های بعدیتون ازش استفاده کنید.

nginxweb server
۱۲
۷
ArashZich
ArashZich
یه برنامه نویس که بیشتر توئیت میکنه
شاید از این پست‌ها خوشتان بیاید