سجلات وصول Nginx: معنى كل حقل وكيفية تحليلها

Web2026-09-22TryQuickToolBox

تسجّل سجلات وصول Nginx كل طلب يتعامل معه خادم الويب الخاص بك. وهي أول مكان تبحث فيه عند تصحيح أخطاء 404، أو تتبع نقاط النهاية البطيئة، أو التحقيق في حركة مرور مشبوهة. ومع ذلك، يتصفح العديد من المطورين أسطر السجل الخام دون فهم كامل لكل حقل. يشرح هذا الدليل تنسيق سجل Nginx الافتراضي، ويوضح كيفية تخصيصه، ويستعرض تقنيات تحليل عملية باستخدام أدوات سطر الأوامر القياسية.

تنسيق سجل وصول Nginx الافتراضي

بشكل افتراضي، يستخدم Nginx تنسيق السجل combined، الذي يبدو هكذا:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

سطر سجل نموذجي:

192.0.2.1 - - [10/Oct/2023:13:55:36 +0000] "GET /api/users HTTP/1.1" 200 1234 "https://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

شرح كل حقل على حدة

الحقلالمتغيرالوصف
عنوان العميل$remote_addrعنوان IP للعميل الذي أرسل الطلب.
مستخدم العميل$remote_userاسم المستخدم إذا تم استخدام مصادقة HTTP؛ وإلا -.
الوقت المحلي$time_localوقت الخادم المحلي بتنسيق [day/month/year:hour:minute:second zone].
الطلب$requestسطر الطلب الكامل: الطريقة والمسار وبروتوكول HTTP.
الحالة$statusرمز حالة استجابة HTTP (مثل 200، 404، 500).
بايتات الجسم المُرسلة$body_bytes_sentحجم جسم الاستجابة بالبايت، باستثناء الترويسات.
المرجع$http_refererالصفحة التي ربطت إلى الطلب (إذا وفّرها العميل).
وكيل المستخدم$http_user_agentسلسلة برنامج العميل (متصفح، بوت، أداة).

تخصيص تنسيق السجل

يمكنك تعريف تنسيقك الخاص لالتقاط تفاصيل إضافية مثل زمن الطلب، أو زمن استجابة upstream، أو نسبة gzip. أضف توجيه log_format في كتلة http وارجع إليه في access_log.

http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent" '
                        'rt=$request_time uct="$upstream_connect_time" '
                        'uht="$upstream_header_time" urt="$upstream_response_time"';

    access_log /var/log/nginx/access.log detailed;
}

متغيرات إضافية شائعة:

تحليل سجلات Nginx بأدوات سطر الأوامر

لا تحتاج إلى برامج باهظة الثمن لاستخراج الرؤى. الأدوات القياسية في Unix مثل grep وawk وsort وuniq قوية بما يكفي لمعظم المهام.

1. إيجاد عناوين IP الأكثر تكراراً

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

يساعد هذا في تحديد المصادر كثيفة الاستخدام أو مصادر هجمات DDoS المحتملة.

2. تحديد أكثر عناوين URL المطلوبة

awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

مفيد لفهم المحتوى الشائع أو اكتشاف أنماط غير معتادة.

3. إحصاء رموز حالة HTTP

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

اطّلع بسرعة على عدد أخطاء 404 أو 500 التي تحدث.

4. إيجاد الطلبات ذات أزمنة الاستجابة البطيئة

إذا أضفت $request_time إلى تنسيق سجلك، يمكنك تصفية الطلبات البطيئة:

awk '{ if ($NF > 1) print }' /var/log/nginx/access.log

عدّل الحد (ثانية واحدة هنا) حسب الحاجة.

5. اكتشاف وكلاء المستخدم المشبوهين

awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

ابحث عن بوتات ضارة معروفة أو عملاء غير معتادين.

حالات استخدام عملية

أتمتة التحليل باستخدام محلّلات السجلات

بينما تعمل أوامر سطر الأوامر أحادية السطر للاستعلامات العارضة، تستفيد التقارير المنتظمة من أدوات مخصصة. يمكنك استخدام محلّلات سجلات مفتوحة المصدر مثل GoAccess أو AWStats، أو بناء نصوص برمجية مخصصة. للتحليل السريع عبر المتصفح دون تثبيت أي شيء، يتيح لك Nginx Log Analyzer لصق أسطر السجل والحصول على ملخصات فورية لرموز الحالة وأهم عناوين IP والمسارات المطلوبة.

أفضل الممارسات لإدارة السجلات

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

ما الفرق بين سجلات الوصول وسجلات الأخطاء في Nginx؟

تسجّل سجلات الوصول كل طلب يتعامل معه Nginx، بما في ذلك عنوان IP للعميل وطريقة الطلب ورمز الحالة ووكيل المستخدم. أما سجلات الأخطاء فتلتقط رسائل تشخيصية حول مشكلات الخادم، مثل الاتصالات الفاشلة أو أخطاء التهيئة أو مهل upstream. كلاهما ضروري لسيناريوهات استكشاف أخطاء مختلفة.

كيف يمكنني رؤية عنوان IP الحقيقي للعميل عندما يكون Nginx خلف موازن تحميل؟

عندما يكون Nginx خلف بروكسي أو موازن تحميل، يُظهر $remote_addr عنوان IP الخاص بالموازن. لتسجيل عنوان IP الأصلي للعميل، اضبط وحدة real_ip لتثق بعنوان IP الخاص بالموازن واستخدم $http_x_forwarded_for أو $realip_remote_addr في تنسيق سجلك.

هل يمكنني تحليل سجلات Nginx دون تثبيت برامج؟

نعم. يمكنك استخدام أوامر Unix القياسية مثل grep وawk وsort مباشرة في الطرفية. للمقاربة الرسومية عبر المتصفح، توفّر الأدوات عبر الإنترنت مثل Nginx Log Analyzer رؤى سريعة دون أي تثبيت.

هل أنت مستعد للتعمق في سجلاتك؟ جرّب Nginx Log Analyzer لتحليل سجلات وصولك وعرضها بصرياً في ثوانٍ—دون الحاجة إلى أي إعداد.