بدايةً، يسعدني مساعدتك في حل مشكلتك مع خطأ Nginx الذي تواجهه. يبدو أن هناك خطأ في ملف الضبط الخاص بـ Nginx (/etc/nginx/sites-enabled/default) في السطر 20، والذي يظهر كـ “unexpected end of file, expecting ‘;’ or ‘}'”. سنقوم بتفحص الملف للتحقق من الخطأ.
في البداية، يبدو أن هناك نقص في إعدادات موقع الخادم الخاص بك. يمكننا بدايةً بتحديد الأخطاء المحتملة في ملف الضبط. الجزء الملف الذي قد يكون هو المتسبب في المشكلة يظهر في الكود التالي:
nginxlocation /
يبدو أن هناك شيئًا مفقودًا بعد هذا السطر، فمن المهم إضافة إعدادات إضافية لهذا الموقع. على سبيل المثال، يمكن أن يكون هناك مشكلة في الغياب عن كتابة إعدادات موقع الويب الفعلي، مثل:
nginxlocation / { # إعدادات الموقع هنا }
المفقود يجب أن يكون بين القوسين التقريبيين {} ويحتوي على إعدادات الموقع. قد يكون هناك أخطاء أخرى في ملف الضبط، لذا من الأفضل فحص الملف بشكل كامل.
من النص يظهر أيضًا أن هناك خطأ في استخدام المتغير $domain_name
داخل ملف الضبط. يفضل استبداله بالقيمة المناسبة لاسم الخادم الخاص بك.
لحل هذه المشكلة، يمكنك متابعة تحرير ملف الضبط (/etc/nginx/sites-enabled/default) بعناية، والتأكد من أن كل إعدادات الموقع مكتوبة بشكل صحيح وأنها محاطة بالقوسين التقريبيين {} بشكل صحيح.
بالتوفيق في حل مشكلتك، وإذا كنت بحاجة إلى مساعدة إضافية أو لديك أي أسئلة إضافية، فأنا هنا للمساعدة.
المزيد من المعلومات
بالطبع، سنقوم الآن بتوسيع فهمك لتتمكن من حل المشكلة بشكل أفضل. يبدو أن المشكلة في ملف الضبط الخاص بـ Nginx (/etc/nginx/sites-enabled/default)، لذا سأقدم لك تحليلاً أعمق.
أولاً وقبل كل شيء، يجدر بنا أن نلاحظ أن ملف الضبط الحالي يظهر أن هناك بعض الأجزاء قد تم تعليقها باستخدام رموز #. في عالم Nginx، يتم استخدام هذه الرموز لتعليق السطور وجعلها غير نشطة. على سبيل المثال:
nginx#listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default_server ipv6only=on; ## listen for ipv6
يبدو أن هناك تعليقاتًا لخطوط قد تكون مهمة في إعدادات الخادم. قد تكون من المفيد التحقق مما إذا كان يجب تفعيل بعض هذه الخطوط بناءً على احتياجات موقع الويب الخاص بك.
علاوة على ذلك، يبدو أن هناك تضارب في استخدام المتغير $domain_name
. لا يوجد تعريف له في المقطع الحالي من الملف، ولكن يتم استخدامه كـ server_name
في وقت لاحق. يجب عليك تحديد قيمة لـ $domain_name
في الجزء العلوي من ملف الضبط قبل استخدامه في server_name
.
نقوم الآن بتحليل الكود الذي أثار الخطأ:
nginxlocation /
يبدو أن هناك نقص في هذا الموضع. يجب عليك إضافة الإعدادات اللازمة بعد location /
لتحديد كيف يجب التعامل مع الطلبات على المسار الجذري “/”. على سبيل المثال:
nginxlocation / { # إعدادات الموقع هنا }
بإضافة هذا الجزء، يمكنك تحديد كيف يجب معالجة الطلبات على المسار الجذري للموقع.
بعد إجراء هذه التعديلات، قم بحفظ الملف وأعد تشغيل Nginx. يمكنك استخدام الأمر التالي:
bashsudo service nginx restart
بعد ذلك، قم بفحص ملف السجلات للتحقق من وجود أي أخطاء إضافية. يمكنك استخدام الأمر التالي:
bashsudo tail -f /var/log/nginx/error.log
أتمنى أن يكون هذا التحليل مفيدًا وأن يساعدك في حل مشكلتك. في حال استمرار الصعوبات أو إذا كان لديك أي استفسارات إضافية، فأنا هنا للمساعدة.