النتيجة الناجحة لأمر nginx -t ≠ إمكانية فتح الموقع.
عنوان الخلفية الخاص بنا /admin سيئ على المدى الطويل: إعادة توجيه 301 إلى /admin/، بينما هذه دليلة حقيقية ولا تحتوي على ملف صفحة رئيسية، فيعرض المتصفح صفحة بيضاء مع خطأ 403 — تكون فحوصات الصيغة خضراء بالكامل، لكن السجلات مليئة برسالة "directory index is forbidden". يوفّر لك هذا الأداة نصًّا برمجيًّا لـ curl يقوم بطباعة رموز الحالة خطوةً بخطوة، بالإضافة إلى أجزاء إصلاح nginx المقابلة لكل عطل.
—
—
| الظاهرة | الأسباب الجذرية الأكثر شيوعًا | كيفية التأكيد |
|---|---|---|
| 301 → مع شرطة مائلة → 403 | اسم المسار هو دليل حقيقي،try_files $uri $uri/ يُفعّل إعادة التوجيه للدليل، ولا يوجد ملف index داخل الدليل. | ls /var/www/الموقع/الدليل_المطلوب تحقق مما إذا كان هناك ملف index.html |
| عدد كبير جدًا من عمليات إعادة التوجيه | تداخل إعادة التوجيه 301 الخاصة بمواقع location الدقيقة مع إعادة التوجيه الداخلية try_files | تحقق في النص البرمجي مما إذا كانت قيمة Location تعود إلى العنوان السابق. |
| عنوان URL نظيف يؤدي إلى خطأ 404، بينما يعمل الملف مع الامتداد .html بشكل طبيعي. | قلل من استخدام try_files $uri.html | إضافة try_files $uri $uri.html $uri/ =404; |
| تمت إعادة توجيه الملف .html عبر 301 إلى عنوان URL نظيف خاطئ. | مستخدم في location if إجراء تحقق باستخدام التعبيرات النمطية، تم التغطية عليه $1 مجموعة الالتقاط | انقل شرط if خارج هذا الموقع (location)، أو استخدم map بدلًا منه |
| مسار بادئة معين لم يتبع موضع location المتوقع. | موقع regex يسبق ^~ الوصول قبل البادئة (^~ سيُهمِش الموقع العادي، لكن البادئة العادية لن تفعل ذلك) | nginx -T | grep -n location انظر الترتيب والنوع |
| 403 وتسجّل السجلات "forbidden by rule". | قواعد deny أو أذونات الملفات | انظر إلى السطر المحدد في سجل الخطأ (error log)، ولا تخمّن. |
1 · عنوان الخلفية يظل دائمًا 403./admin أُعيد توجيهه عبر 301 إلى /admin/، بينما /admin/ هو دليل حقيقي (يحتوي على data/) ولا يحتوي ملف index → خطأ 403 مع شاشة بيضاء. فقط /admin.html يمكنك الدخول.
2 · التعديل هو إعادة كتابة داخلية، وليس إضافة index.rewrite ^/admin/?$ /admin.html last; اجعل كلًّا من /admin و/admin/ يُوجِّه مباشرةً إلى الملف، مع بقاء طبقة حماية تسجيل الدخول دون تغيير.
3 · لا يمكن لفحص بنية الجملة اكتشاف هذه المشكلة.nginx -t يتحقق هذا الأداة من الصياغة فقط؛ أما الأخطاء المنطقية مثل سلاسل إعادة التوجيه أو فهرسة الدليل فهي تظهر باللون الأخضر كأنها صحيحة. بعد التعديل، يجب إرسال طلب فعلي للتحقق من رمز الحالة وعدد عمليات التحويل.
٤ · الاختبار الزوجي./x و /x/ هما عنوانا URI مختلفان، وقد تختلف القواعد المُطبَّقة عليهما؛ ويجب أن يُرجع كلاهما رمز الحالة 200.