تخطَّ إلى المحتوى

التكامل مع خادم المصدر

تغطي هذه الصفحة مرحلتين من مراحل التكامل:

  1. التكامل المباشر — تقوم حافة CDN بإعادة التوجيه إلى خادم المصدر مباشرةً (اختبار خط الأساس)
  2. إدراج F5 XC — يُدرج موازن تحميل F5 XC HTTP بين CDN وخادم المصدر (عرض توضيحي للأمان)

ابدأ بالتكامل المباشر لإرساء خط الأساس، ثم أدرج F5 XC عند الاستعداد.

يوفر مكوّن المختبر origin-server تطبيقات ويب تحتوي على ثغرات مخصصة لاختبار الأمان.

الخاصيةالقيمة
التوثيقf5-sales-demo.github.io/origin-server
المستودعgithub.com/f5-sales-demo/origin-server
المنفذ الافتراضي80
فحص الصحةGET /health

استرجع كتالوج التطبيقات الحالي من بيان خادم المصدر المنشور:

Terminal window
MANIFEST_URL=$(curl -sf https://api.github.com/repos/f5-sales-demo/origin-server/releases/latest \
| python3 -c "import sys,json; assets=json.load(sys.stdin).get('assets',[]); print(next((a['browser_download_url'] for a in assets if a['name']=='manifest.json'),''))")
curl -sf "$MANIFEST_URL" | python3 -m json.tool

إذا لم يكن هناك إصدار موجود بعد، استخدم مصدر المستودع مباشرةً:

Terminal window
curl -sf https://raw.githubusercontent.com/f5-sales-demo/origin-server/main/manifest.json | python3 -m json.tool

يسرد البيان جميع مسارات التطبيقات وفحوصات الصحة وصور الحاويات وتعيينات ميزات العرض التوضيحي.

المسارالتطبيقميزات العرض التوضيحي
/صفحة الهبوط
/healthفحص الصحة
/juice-shop/OWASP Juice Shopجدار حماية تطبيقات الويب (WAF)، دفاع Bot، أمان API
/dvwa/DVWAجدار حماية تطبيقات الويب (WAF)، دفاع Bot
/vampi/VAmPIأمان API
/httpbin/httpbinالتشخيصات
/whoami/whoamiالتحقق من الترويسات
/csd-demo/CSD Demoالدفاع من جهة العميل

المرحلة الأولى: التكامل المباشر (خط الأساس)

Section titled “المرحلة الأولى: التكامل المباشر (خط الأساس)”
┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ Client │────▶│ CDN Edge (NGINX) │────▶│ Origin Server │
│ │ │ 20.65.90.112 │ │ 20.12.78.159 │
└──────────┘ │ 67+ CDN headers │ │ Juice Shop, DVWA, │
│ Disk cache │ │ VAmPI, httpbin, │
└──────────────────────┘ │ whoami, CSD Demo │
└─────────────────────┘

عيّن عنوان IP لخادم المصدر في إعدادات NGINX لحافة CDN:

Terminal window
ssh azureuser@<CDN_EDGE_IP>
sudo sed -i 's|proxy_pass .*;|proxy_pass http://<ORIGIN_IP>;|' /etc/nginx/conf.d/cdn-edge.conf
sudo rm -rf /var/cache/nginx/cdn/*
sudo nginx -t && sudo systemctl reload nginx

أو عيّنه عند وقت النشر عبر Terraform من خلال terraform.tfvars:

origin_server = "http://<ORIGIN_IP>"

التحقق من جميع التطبيقات

Section titled “التحقق من جميع التطبيقات”

اختبر كل تطبيق من تطبيقات خادم المصدر عبر CDN:

Terminal window
CDN=<CDN_EDGE_IP>
# فحص الصحة (محلي على CDN)
curl -sf "http://$CDN/health" | python3 -m json.tool
# صفحة الهبوط
curl -sf -o /dev/null -w "/ : HTTP %{http_code}\n" "http://$CDN/"
# Juice Shop
curl -sf -o /dev/null -w "/juice-shop/ : HTTP %{http_code}\n" "http://$CDN/juice-shop/"
# DVWA (يتبع إعادة التوجيه إلى صفحة تسجيل الدخول)
curl -sf -o /dev/null -w "/dvwa/ : HTTP %{http_code}\n" -L "http://$CDN/dvwa/"
# VAmPI API
curl -sf "http://$CDN/vampi/users/v1" | python3 -m json.tool | head -5
# ترويسات httpbin (تعرض ترويسات CDN بصيغة JSON)
curl -sf "http://$CDN/httpbin/headers" | python3 -m json.tool | head -10
# whoami (يعرض جميع الترويسات التي يستقبلها خادم المصدر)
curl -sf "http://$CDN/whoami/"
# CSD Demo
curl -sf -o /dev/null -w "/csd-demo/ : HTTP %{http_code}\n" "http://$CDN/csd-demo/"

يجب أن تُعيد جميع المسارات HTTP 200 (تُعيد DVWA الاستجابة 302 ثم 200 عند المتابعة).

التحقق من ترويسات CDN عند خادم المصدر

Section titled “التحقق من ترويسات CDN عند خادم المصدر”

تعرض نقطة النهاية /whoami/ كل ترويسة يستقبلها خادم المصدر. عند الوصول إليها عبر CDN، تعرض جميع ترويسات البائع البالغة 67 أو أكثر:

Terminal window
curl -sf "http://$CDN/whoami/"

تحقق من وجود هذه الترويسات الرئيسية:

البائعالترويسةالقيمة المتوقعة
قياسيX-Forwarded-For<your_ip>, <cdn_edge_ip>
AkamaiTrue-Client-Ip<your_ip>
CloudflareCf-Connecting-Ip<your_ip>
CloudFrontCloudfront-Viewer-CountryUS
FastlyFastly-Client-Ip<your_ip>
Azure FDX-Azure-Clientip<your_ip>

الربط التبادلي للسجلات

Section titled “الربط التبادلي للسجلات”

قارن سجلات الوصول على كلا الخادمين للتحقق من تدفق حركة المرور:

Terminal window
# سجل حافة CDN — يعرض عنوان IP الخاص بعميلك كمصدر
ssh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# سجل خادم المصدر — يعرض عنوان IP لحافة CDN كمصدر
ssh azureuser@<ORIGIN_IP> "sudo tail -5 /var/log/nginx/access.log"

يجب أن يعرض سجل خادم المصدر عنوان IP لحافة CDN باعتباره العميل المتصل، بينما يُنقل عنوان IP الفعلي للعميل عبر X-Forwarded-For والترويسات الخاصة بكل بائع.

سلوك ذاكرة التخزين المؤقت

Section titled “سلوك ذاكرة التخزين المؤقت”
Terminal window
# الطلب الأول — MISS (مُسترجع من خادم المصدر)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status
# الطلب الثاني — HIT (مُقدَّم من ذاكرة تخزين CDN المؤقتة)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status

المرحلة الثانية: إدراج F5 XC (العرض التوضيحي للأمان)

Section titled “المرحلة الثانية: إدراج F5 XC (العرض التوضيحي للأمان)”

بعد اختبار خط الأساس، أدرج موازن تحميل F5 XC HTTP بين CDN وخادم المصدر:

┌──────────┐ ┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client │────▶│ CDN Edge │────▶│ F5 XC HTTP LB │────▶│ Origin Server │
│ │ │ (NGINX) │ │ WAF + Bot + API │ │ │
└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘
  1. أنشئ موازن تحميل F5 XC HTTP مع إضافة خادم المصدر في مجموعة المصادر الخاصة به
  2. حدّث حافة CDN لتشير إلى VIP الخاص بـ F5 XC بدلاً من الإشارة المباشرة إلى خادم المصدر:
Terminal window
ssh azureuser@<CDN_EDGE_IP>
sudo sed -i 's|proxy_pass .*;|proxy_pass https://<F5XC_LB_VIP>;|' /etc/nginx/conf.d/cdn-edge.conf
sudo rm -rf /var/cache/nginx/cdn/*
sudo nginx -t && sudo systemctl reload nginx
  1. تحقق من تطبيق WAF عبر السلسلة الكاملة:
Terminal window
# حقن SQL عبر CDN ← يجب أن يحجب جدار حماية تطبيقات الويب (WAF) الخاص بـ F5 XC هذا الطلب
curl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# يجب أن يمر الطلب العادي
curl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"
  1. هيّئ ترويسة IP العميل الموثوق في F5 XC لقراءة عنوان IP الفعلي للعميل من ترويسات CDN (مثلاً: True-Client-IP لمحاكاة Akamai، وCF-Connecting-IP لمحاكاة Cloudflare)
المكوّنالمستودعالغرض
حافة CDN (هذا)cdn-simulatorالتخزين المؤقت وترويسات البائع
خادم المصدرorigin-serverتطبيقات الويب المكشوفة
إعدادات F5 XCمتنوعة (waf, api-protection, bot-*, إلخ)سياسات الأمان

ينشر كل مكوّن وثائق تقرأها مساعدات الذكاء الاصطناعي لنشر البنية التحتية. يُصدر خادم المصدر بيان نقطة النهاية كأداة إصدار على GitHub تسرد جميع مسارات التطبيقات وفحوصات الصحة.