مولّد إعدادات Nginx

نوع الموقع
التالي

كتابة إعدادات Nginx من الصفر تعني تذكّر كل سطر proxy_set_header، وكل نوع MIME تضغطه gzip، والفرق بين try_files $uri/ /index.php?$args والصيغة التي تُفسد التوجيه بشكل خفي. يسألك هذا المولّد عن النطاق، والخادم الخلفي (upstream)، ومعالج PHP، ومسارات شهادات SSL، ثم يُخرج كتلة server بقيم افتراضية معقولة لـ TLS وHTTP/2 وضغط المحتوى والتخزين المؤقت للملفات الثابتة.

كيفية إنشاء كتلة server الخاصة بك

  1. 1

    اختر إعدادًا جاهزًا

    موقع ثابت، أو PHP-FPM (لـ Laravel أو WordPress)، أو وكيل عكسي لـ Node.js، أو إعادة توجيه 301 بسيطة.

  2. 2

    أدخل النطاق

    ضمّن قائمة server_name، وعادةً ما تشمل النسخة التي تبدأ بـ www والنسخة بدونها.

  3. 3

    حدّد تفاصيل SSL

    أشِر إلى ملفَّي fullchain وprivkey، أو تخطَّ هذه الخطوة لاستخدام HTTP فقط.

  4. 4

    اضبط الخادم الخلفي (upstream)

    المنفذ، أو مسار الـ socket، أو عنوان URL للواجهة الخلفية في حالات proxy_pass.

  5. 5

    انسخ وانشر

    ضع الناتج في /etc/nginx/sites-available، ثم شغّل nginx -t وأعد تحميل الخادم.

كيف تبدو كتلة server جيدة

تتكوّن الاستضافة الافتراضية الحديثة في Nginx عادةً من هذه الأجزاء:

القسم الغرض
listen 443 ssl http2 قبول HTTPS مع تفعيل HTTP/2
ssl_certificate + ssl_certificate_key الإشارة إلى ملف شهادة TLS ومفتاحها
ssl_protocols TLSv1.2 TLSv1.3 استبعاد إصدارات TLS القديمة
gzip on + الأنواع ضغط النصوص وHTML وJSON وJS وCSS أثناء الإرسال
رؤوس expires للملفات الثابتة تقليل الطلبات المتكررة من الزوار العائدين
try_files التوجيه إلى وحدة تحكم أمامية (PHP، Laravel، إلخ)
HSTS + رؤوس الأمان إلزام المتصفح باستخدام TLS

أساسيات الوكيل العكسي

لتطبيقات Node.js وPython وRuby التي تعمل خلف Nginx:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

نسيان X-Forwarded-For هو الطريقة الكلاسيكية لفقدان عناوين IP الحقيقية للزوار في سجلّات تطبيقك.

أخطاء شائعة

  • غياب كتلة server_name احتياطية. يستخدم Nginx أول كتلة server كإعداد افتراضي إذا لم يتطابق أي اسم. أضِف كتلة شاملة server_name _ تُعيد الرمز 444 لتفادي هجمات ترويسة المضيف (Host header).
  • ترتيب خاطئ للشهادة. يجب أن يحتوي ملف ssl_certificate على السلسلة الكاملة (fullchain: الشهادة النهائية + الشهادات الوسيطة)، لا الشهادة النهائية وحدها.
  • مبالغة في التخزين المؤقت. إرسال expires 1y مع /index.html سيُفسد عمليات النشر. استخدم بدلًا من ذلك عناوين URL مُرقَّمة بالإصدار للملفات الثابتة.
  • إعادة التحميل دون اختبار. شغّل دائمًا nginx -t قبل systemctl reload nginx؛ فخطأ واحد في الصياغة يُوقِف الموقع بالكامل.

الأسئلة الشائعة

HTTP/2 مستقر ومدعوم بالكامل في Nginx 1.25 فما فوق، بينما يتوفر HTTP/3 (QUIC) في الإصدار نفسه بصفة تجريبية. في إعداد إنتاجي اليوم، فعِّل HTTP/2، ويمكنك إضافة HTTP/3 اختياريًا عبر التوجيهين http3 وquic.

العُرف السائد هو /etc/ssl/certs/ للسلاسل العامة و/etc/ssl/private/ للمفاتيح الخاصة. أما Let’s Encrypt فيضع كل شيء في /etc/letsencrypt/live/domain/. استخدم المسار الذي تتوقعه أداة التجديد لديك.

نعم، لمعظم المواقع. أضِف كتلة server منفصلة على المنفذ 80 تُعيد 301 https://$host$request_uri. ومع تفعيل HSTS، نادرًا ما تُستدعى كتلة HTTP بعد الطلب الأول.

شغّل sudo nginx -t لتحليل الملف دون إعادة تحميله. فإذا طبع “syntax is ok” و“test is successful“، أعد التحميل عبر sudo systemctl reload nginx. لا تستخدم restart في بيئة الإنتاج أبدًا؛ فإعادة التحميل لا تقطع الخدمة.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

مرجع اختصارات لوحة المفاتيح

ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.

مدقق البريد الإلكتروني

تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.

عدّاد FPS

قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.

مولد EditorConfig

أنشئ ملف .editorconfig بقواعد نمط المسافة البادئة وحجمها ونهاية السطر ومجموعة الأحرف والمسافات البيضاء، لتنسيق موحّد عبر بيئات التطوير المتكاملة (IDEs) والمحررات.

الأداة متاحة بلغات أخرى