لماذا تعتني ببروكسيك العكسي على VPS
على VPS، خادم الويب الأمامي هو القطعة التي تنسّق كل شيء: يُنهي TLS، ويوزّع حركة المرور على حاوياتك (التطبيق، منصة Git، خادم الوسائط، LLM)، ويقدّم الملفات الثابتة، ويطبّق ترويسات الأمان. وإذا أُحسِن اختياره، يبسّط جذريًا تفعيل HTTPS على جميع نطاقاتك الفرعية. يحصل Caddy على شهادات Let's Encrypt ويجدّدها تلقائيًا، من دون إعداد، عبر ملف Caddyfile مقروء من بضعة أسطر. أما Nginx، مرجع السوق، فيقدّم تحكّمًا دقيقًا للغاية (التخزين المؤقت، قواعد إعادة الكتابة، موازنة الحِمل، تحديد المعدل) لكنه يتطلّب إدارة يدوية للشهادات أو عبر Certbot. يقابل الخيار بين الأتمتة الحديثة والسيطرة الكاملة المُختبَرة.
ما الذي تقدّمه واجهة أمامية جيدة لـ VPS الخاص بك
- إنهاء TLS مركزي لجميع نطاقاتك الفرعية
- بروكسي عكسي واحد نحو عدة حاويات Docker
- تقديم سريع للملفات الثابتة وضغط (gzip/brotli)
- ترويسات أمان (HSTS، CSP) مُطبَّقة في المكان نفسه
- مع Caddy: شهادات Let's Encrypt تُستحصَل وتُجدَّد تلقائيًا
- مع Nginx: تخزين مؤقت وتحديد معدل وموازنة حِمل مضبوطة بدقة
المتطلبات: واجهة أمامية اقتصادية
البروكسي العكسي خفيف جدًا: يعمل كل من Caddy وNginx بأريحية على 1 vCPU و512 ميغابايت إلى 1 غيغابايت من الذاكرة، حتى أمام عدة خدمات. المورد الذي يجب مراقبته هو بالأحرى عرض النطاق وعدد الاتصالات المتزامنة. تحتاج إلى نطاق ونطاقاته الفرعية تشير إلى عنوان IP الخاص بالـ VPS (سجلات A/AAAA)، والمنفذين 80 و443 مفتوحين في الجدار الناري (المنفذ 80 مطلوب للتحقق من الشهادات)، وDocker إذا وضعت البروكسي في حاوية. لا حاجة إلى GPU ولا تخزين كبير: هنا، الإعداد هو ما يصنع الفرق، لا القدرة الخام.
إعداد Caddy (أو Nginx) كبروكسي عكسي
توجيه DNS
أنشئ سجلات A (وAAAA إذا كان IPv6) لكل نطاق فرعي (app، git، media) نحو عنوان IP الخاص بالـ VPS. سيفشل التحقق من Let's Encrypt ما دام تحليل DNS غير فعّال، لذا تحقّق منه أولًا.
فتح المنفذين 80 و443
اسمح بالمنفذين 80 و443 فقط في الجدار الناري. يظل المنفذ 80 ضروريًا لتحدّي HTTP الخاص بـ Let's Encrypt ولإعادة توجيه حركة المرور تلقائيًا إلى HTTPS.
كتابة الإعداد
مع Caddy، تكفي كتلة واحدة: app.yourdomain.com { reverse_proxy 127.0.0.1:3000 } وHTTPS تلقائي. ومع Nginx، اكتب كتلة server لكل نطاق فرعي مع proxy_pass وترويسات X-Forwarded-*، ثم احصل على الشهادة عبر Certbot.
التشغيل وإعادة التحميل من دون انقطاع
شغِّل الخدمة (docker compose up -d أو systemd). بعد كل تعديل، تحقّق من صحة الإعداد (nginx -t أو caddy validate) ثم أعِد التحميل السريع (nginx -s reload / caddy reload) كي لا تقطع حركة المرور أبدًا.
تعزيز الأمان
فعِّل HSTS، وأخفِ إصدار الخادم، وافرض TLS 1.2+، وأضِف تحديد معدل أساسيًا. مركِّز هذه الترويسات على مستوى البروكسي كي تُطبَّق على جميع الخدمات النهائية (downstream).
إعداد السجلات والمراقبة
فعِّل سجلات الوصول والأخطاء، وراقب الرموز 502/504 التي تكشف حاوية نهائية غير قابلة للوصول. واجهة أمامية سليمة مع أخطاء 502 تشير دائمًا إلى الخدمة المُوجَّهة، لا إلى البروكسي.
| المعيار | Caddy | Nginx |
|---|---|---|
| HTTPS / الشهادات | تلقائي، بلا إعداد | يدوي أو عبر Certbot |
| صياغة الإعداد | Caddyfile، مقتضب جدًا | أكثر إسهابًا، معبِّر جدًا |
| منحنى التعلّم | منخفض | متوسط إلى مرتفع |
| تحكّم دقيق (تخزين مؤقت، إعادة كتابة، موازنة حِمل) | جيد، أحيانًا عبر إضافات | متكامل جدًا ومُختبَر |
| أداء الملفات الثابتة | ممتاز | ممتاز، المرجع |
| HTTP/3 / QUIC | مُفعَّل افتراضيًا | مدعوم حسب الإصدار |
| المنظومة / التوثيق | حديث، في نمو | واسع، ناضج جدًا |
| مثالي لـ | تفعيل HTTPS سريع، نطاقات فرعية متعددة | ضبط متقدم، حركة مرور عالية |
إذا كنت متردّدًا، فاعلم أنهما لا يتنافيان: نمط شائع يضع Caddy كأول واجهة أمامية لإدارة TLS تلقائيًا لجميع نطاقاتك الفرعية، ثم يترك Nginx في الخلف للتخزين المؤقت الدقيق وقواعد إعادة الكتابة لخدمة محددة. بهذا تجمع بين أتمتة الشهادات والتحكّم في الضبط، من دون اختيار طرف نهائيًا.