इसे छोड़कर कंटेंट पर जाएं

अवलोकन

यह घटक लैब और डेमो वातावरण के लिए एक CDN एज नोड का अनुकरण करता है। यह उस भूमिका को दर्शाता है जो Akamai, Cloudflare, Amazon CloudFront, या Fastly जैसे वेंडर किसी ग्राहक की नेटवर्क आर्किटेक्चर में निभाते हैं — वह कैशिंग परत जो अंतिम उपयोगकर्ताओं के सबसे निकट होती है और ऑरिजिन सर्वर के सामने स्थित होती है।

प्रोडक्शन मल्टी-वेंडर आर्किटेक्चर में, ग्राहक आमतौर पर किसी तृतीय-पक्ष CDN को F5 Distributed Cloud के साथ जोड़ते हैं:

End User → CDN Edge (Akamai/Cloudflare/etc.) → F5 XC HTTP LB → Origin App

यह सिम्युलेटर वाणिज्यिक CDN को NGINX-आधारित एज नोड से प्रतिस्थापित करता है, ताकि वेंडर अनुबंध या प्रोडक्शन इन्फ्रास्ट्रक्चर के बिना एकीकरण को प्रदर्शित और परीक्षण किया जा सके।

┌─────────┐ ┌──────────────────────┐ ┌─────────────────┐ ┌────────────┐
│ Client │────▶│ CDN Edge (NGINX) │────▶│ F5 XC HTTP LB │────▶│ Origin App │
│ │ │ Ubuntu 24.04 Azure │ │ (Origin Server) │ │ │
└─────────┘ │ - TLS termination │ └─────────────────┘ └────────────┘
│ - Disk-based cache │
│ - X-Cache-Status │
└──────────────────────┘

NGINX एज नोड:

  • TLS समाप्त करता है एज पर (सेल्फ-साइन्ड या Let’s Encrypt)
  • डिस्क पर रिस्पॉन्स कैश करता है proxy_cache_path का उपयोग करके
  • कैश मिस को अग्रेषित करता है एक कॉन्फ़िगरेबल ऑरिजिन सर्वर (F5 XC HTTP लोड बैलेंसर VIP) की ओर
  • कैश स्थिति रिपोर्ट करता है X-Cache-Status रिस्पॉन्स हेडर के माध्यम से (HIT, MISS, BYPASS, EXPIRED)

यह क्या अनुकरण करता है

Section titled “यह क्या अनुकरण करता है”
CDN फ़ंक्शनNGINX कार्यान्वयन
एज कैशिंगproxy_cache डिस्क-आधारित स्टोरेज के साथ
कैश की जनरेशनproxy_cache_key स्कीम, होस्ट और URI पर आधारित
ऑरिजिन पुलproxy_pass F5 XC HTTP लोड बैलेंसर की ओर
TLS समाप्तिNGINX ssl_certificate डायरेक्टिव
Cache-Control का सम्मानproxy_cache_valid ऑरिजिन हेडर पासथ्रू के साथ
कैश स्थिति रिपोर्टिंगadd_header X-Cache-Status $upstream_cache_status
हेल्थ एंडपॉइंट/health लोकेशन जो 200 OK लौटाती है

एंडपॉइंट और अनुरोध/रिस्पॉन्स व्यवहार

Section titled “एंडपॉइंट और अनुरोध/रिस्पॉन्स व्यवहार”
GET /health

रिस्पॉन्स (200 OK, Content-Type: application/json):

{
"status": "healthy",
"component": "cdn-edge",
"engine": "nginx",
"vendor_profiles": ["akamai", "cloudflare", "cloudfront", "fastly", "azure-front-door"]
}

CDN प्रॉक्सी (अन्य सभी पाथ)

Section titled “CDN प्रॉक्सी (अन्य सभी पाथ)”
GET /<any-path>

ऑरिजिन की ओर इंजेक्ट किए गए अनुरोध हेडर (5 वेंडरों से 67+ हेडर):

श्रेणीजोड़े गए हेडर
क्लाइंट IPTrue-Client-IP, CF-Connecting-IP, Fastly-Client-IP, X-Azure-ClientIP, CloudFront-Viewer-Address, X-Forwarded-For, X-Real-IP
जियोलोकेशनX-Akamai-Edgescape (कंपाउंड), CF-IPCountry, cf-ipcity, cf-iplatitude/longitude, CloudFront-Viewer-Country/City/Latitude/Longitude, X-Geo-Country-Code/City/Region
डिवाइस डिटेक्शनCloudFront-Is-Mobile-Viewer, CloudFront-Is-Desktop-Viewer, CloudFront-Is-Tablet-Viewer, X-Akamai-Device-Characteristics
TLS/फिंगरप्रिंटCloudFront-Viewer-TLS, cf-ja3-hash, cf-ja4, CloudFront-Viewer-JA3-Fingerprint
Bot डिटेक्शनcf-bot-score (85 = संभवतः मानव), cf-verified-bot
अनुरोध ट्रेसिंगCf-Ray, X-Akamai-Request-ID, X-Amz-Cf-Id, X-Azure-Ref
एज पहचानX-CDN-Edge, X-CDN-POP, X-Served-By, Fastly-FF, X-Azure-FDID
मानकVia, Forwarded, CDN-Loop, X-Forwarded-Proto/Host/Port

प्रत्येक प्रॉक्सीड रिस्पॉन्स में जोड़े गए रिस्पॉन्स हेडर:

हेडरमानउद्देश्य
X-Cache-StatusHIT, MISS, BYPASS, EXPIRED, STALEइस अनुरोध के लिए कैश व्यवहार
X-CDN-Edgecdn-simulatorइस एज नोड की पहचान करता है
X-CDN-POPSJCअनुकरणीय Point of Presence IATA कोड
X-Served-Bycache-sjc3120-SJCFastly फ़ॉर्मेट में अनुकरणीय कैश नोड
X-Request-IDUUID (प्रति-अनुरोध)अद्वितीय अनुरोध पहचानकर्ता
  • किसी भी पाथ पर पहला अनुरोध: X-Cache-Status: MISS (ऑरिजिन से प्राप्त, अब कैश किया गया)
  • बाद के समान अनुरोध: X-Cache-Status: HIT (डिस्क कैश से परोसा गया)
  • कैश की: $scheme$host$request_uri (स्कीम + होस्टनेम + पूरा पाथ + क्वेरी स्ट्रिंग)
  • कैश TTL: 200/301/302 के लिए 10 मिनट, 404 के लिए 1 मिनट
  • स्टेल सर्विंग: ऑरिजिन त्रुटियों (500/502/503/504) पर कैश की गई सामग्री लौटाता है
एक्सेस विधिकमांड/पाथ
SSHssh azureuser@<PUBLIC_IP>
NGINX कॉन्फ़िग/etc/nginx/conf.d/cdn-edge.conf
NGINX लॉग/var/log/nginx/access.log और /var/log/nginx/error.log
कैश डायरेक्टरी/var/cache/nginx/cdn/
Cloud-init लॉग/var/log/cloud-init-output.log

मॉड्यूलर घटक डिज़ाइन

Section titled “मॉड्यूलर घटक डिज़ाइन”

यह एक बड़े लैब वातावरण का एक हिस्सा है। प्रत्येक घटक स्वतंत्र है और अलग-अलग तैनात किया जाता है:

  • यह घटक CDN एज प्रदान करता है (Azure VM पर NGINX)
  • अन्य घटक ऑरिजिन एप्लिकेशन, F5 XC कॉन्फ़िगरेशन, DNS, वेब ऐप फ़ायरवॉल (WAF) नीतियाँ आदि प्रदान करते हैं।

मानव ऑपरेटर एक समय में एक घटक जोड़ता है। प्रत्येक घटक का दस्तावेज़ीकरण इस प्रकार लिखा गया है कि एक AI सहायक उसे पढ़कर स्वायत्त रूप से इन्फ्रास्ट्रक्चर तैनात कर सके।

NGINX को CDN सिम्युलेशन इंजन के रूप में इसलिए चुना गया:

  1. F5 उत्पाद — F5 ने 2019 में NGINX Inc. का अधिग्रहण किया; यह F5 पोर्टफोलियो का हिस्सा है
  2. उद्योग-सिद्ध — Cloudflare ने Pingora पर माइग्रेट करने से पहले एक दशक से अधिक समय तक अपना पूरा CDN NGINX पर चलाया; Netflix अपने Open Connect CDN के लिए NGINX का उपयोग करता है
  3. एकल प्रक्रिया — एक ही बाइनरी में TLS समाप्ति और कैशिंग संभालता है, Varnish के विपरीत जिसे एक अलग TLS प्रॉक्सी की आवश्यकता होती है
  4. सरल तैनाती — Ubuntu 24.04 पर apt install nginx, दो डायरेक्टिव कैशिंग सक्षम करते हैं
  5. अच्छी तरह दस्तावेज़ीकृत — कंटेंट कैशिंग और रिवर्स प्रॉक्सी कॉन्फ़िगरेशन के लिए विस्तृत आधिकारिक दस्तावेज़ीकरण