- Startseite
- CDN-Simulator
- Überprüfung
Überprüfung
Führen Sie nach der Bereitstellung diese Prüfungen durch, um zu bestätigen, dass der CDN-Edge-Knoten ordnungsgemäß funktioniert. Warten Sie nach terraform apply 2–3 Minuten, bis Cloud-Init die NGINX-Installation abgeschlossen hat.
Health-Check
Abschnitt betitelt „Health-Check“Überprüfen Sie, ob NGINX läuft und antwortet:
curl -s "http://<PUBLIC_IP>/health" | jq .Erwartete Ausgabe:
{ "status": "healthy", "component": "cdn-edge", "engine": "nginx", "vendor_profiles": [ "akamai", "cloudflare", "cloudfront", "fastly", "azure-front-door" ]}Bei Verwendung von Terraform-Ausgaben:
curl -s "$(terraform output -raw health_check_url)" | jq .Cache-Miss (Erste Anfrage)
Abschnitt betitelt „Cache-Miss (Erste Anfrage)“Die erste Anfrage an einen beliebigen Pfad ist ein Cache-Miss — der Edge-Knoten ruft den Inhalt vom Ursprungsserver ab:
curl -I "http://<PUBLIC_IP>/"Achten Sie auf diese Header in der Antwort:
X-Cache-Status: MISSX-CDN-Edge: cdn-simulatorMISS bedeutet, dass der Inhalt nicht im Cache vorhanden war und vom Ursprungsserver abgerufen wurde.
Cache-Hit (Nachfolgende Anfrage)
Abschnitt betitelt „Cache-Hit (Nachfolgende Anfrage)“Wiederholen Sie dieselbe Anfrage sofort:
curl -I "http://<PUBLIC_IP>/"Erwartete Header:
X-Cache-Status: HITX-CDN-Edge: cdn-simulatorHIT bestätigt, dass die Antwort aus dem NGINX-Datenträgercache bereitgestellt wurde, ohne den Ursprungsserver zu kontaktieren.
Cache-Verzeichnisinspektion
Abschnitt betitelt „Cache-Verzeichnisinspektion“Melden Sie sich per SSH bei der VM an, um zu überprüfen, ob zwischengespeicherte Inhalte auf dem Datenträger vorhanden sind:
ssh azureuser@<PUBLIC_IP>
# Check cache directory has contentsudo find /var/cache/nginx/cdn -type f | head -20
# Check cache sizesudo du -sh /var/cache/nginx/cdnNGINX-Status
Abschnitt betitelt „NGINX-Status“Überprüfen Sie, ob NGINX läuft und die Konfiguration gültig ist:
ssh azureuser@<PUBLIC_IP>
# Check service statussudo systemctl status nginx
# Validate configurationsudo nginx -t
# View active connections (if stub_status is enabled)curl -s http://localhost/healthKonnektivität zum Ursprungsserver
Abschnitt betitelt „Konnektivität zum Ursprungsserver“Überprüfen Sie, ob der Edge-Knoten den Ursprungsserver erreichen kann:
ssh azureuser@<PUBLIC_IP>
# Test connectivity to origin (replace with your origin URL)curl -I "https://your-origin.example.com/"Falls dies fehlschlägt, prüfen Sie:
- Die Variable
origin_serverist in der Terraform-Konfiguration korrekt angegeben - Der Ursprungsserver erlaubt eingehende Verbindungen von der öffentlichen IP des Edge-Knotens
- Die DNS-Auflösung funktioniert von der VM aus (
nslookup your-origin.example.com)
Cloud-Init-Fortschritt
Abschnitt betitelt „Cloud-Init-Fortschritt“Überwachen Sie den Bereitstellungsfortschritt über das Cloud-Init-Protokoll:
ssh azureuser@<PUBLIC_IP> "tail -f /var/log/cloud-init-progress.log"Erwartete Phasen: [init], [nic] (dynamische NIC-Erkennung), [complete].
Falls Cloud-Init Fehler meldet:
ssh azureuser@<PUBLIC_IP> "sudo cloud-init status --long"End-to-End-Test
Abschnitt betitelt „End-to-End-Test“Führen Sie einen vollständigen Anfragezyklus durch und überprüfen Sie die Antwortkette:
# First request — MISS (fetches from origin)echo "=== Request 1 (expect MISS) ==="curl -s -o /dev/null -w "HTTP %{http_code} | Cache: %{header:X-Cache-Status}\n" "http://<PUBLIC_IP>/test-path"
# Second request — HIT (served from cache)echo "=== Request 2 (expect HIT) ==="curl -s -o /dev/null -w "HTTP %{http_code} | Cache: %{header:X-Cache-Status}\n" "http://<PUBLIC_IP>/test-path"Erwartete Ausgabe:
=== Request 1 (expect MISS) ===HTTP 200 | Cache: MISS=== Request 2 (expect HIT) ===HTTP 200 | Cache: HITÜberprüfung der Anbieter-Header
Abschnitt betitelt „Überprüfung der Anbieter-Header“Überprüfen Sie, ob alle CDN-Anbieter-Header eingefügt werden, indem Sie den Pfad /headers aufrufen (bei Verwendung von httpbin.org als Ursprungsserver):
curl -s "http://<PUBLIC_IP>/headers" | python3 -m json.toolDie erwartete Antwort enthält Header von allen fünf Anbietern:
{ "headers": { "True-Client-Ip": "<YOUR_CLIENT_IP>", "Cf-Connecting-Ip": "<YOUR_CLIENT_IP>", "Cf-Ipcountry": "US", "Cf-Ray": "<request_id>-SJC", "Cf-Bot-Score": "85", "Cf-Ja3-Hash": "e7d705a3286e19ea42f587b344ee6865", "Cloudfront-Viewer-Country": "US", "Cloudfront-Viewer-City": "San Jose", "Cloudfront-Is-Desktop-Viewer": "true", "Cloudfront-Is-Mobile-Viewer": "false", "Fastly-Client-Ip": "<YOUR_CLIENT_IP>", "X-Akamai-Edgescape": "georegion=263,country_code=US,...", "X-Azure-Clientip": "<YOUR_CLIENT_IP>", "X-Azure-Fdid": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "X-Geo-Country-Code": "US" }}Geräteerkennung-Test
Abschnitt betitelt „Geräteerkennung-Test“Testen Sie mit einem mobilen User-Agent, um zu überprüfen, ob sich die Geräteerkennungs-Header ändern:
curl -s "http://<PUBLIC_IP>/headers?device=mobile" \ -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" \ | python3 -m json.tool | grep -E "Is-Mobile|Is-Desktop|is_mobile"Erwartet:
"Cloudfront-Is-Desktop-Viewer": "false","Cloudfront-Is-Mobile-Viewer": "true",Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“NGINX läuft nicht
Abschnitt betitelt „NGINX läuft nicht“ssh azureuser@<PUBLIC_IP>sudo systemctl status nginxsudo journalctl -u nginx --no-pager -n 50Cloud-Init nicht abgeschlossen
Abschnitt betitelt „Cloud-Init nicht abgeschlossen“Nach terraform apply benötigt Cloud-Init 2–3 Minuten. Fortschritt prüfen:
ssh azureuser@<PUBLIC_IP>sudo cloud-init statussudo tail -f /var/log/cloud-init-output.logCache zeigt immer MISS an
Abschnitt betitelt „Cache zeigt immer MISS an“- Überprüfen Sie, ob der Ursprungsserver cachefähige Antwortcodes zurückgibt (200, 301, 302)
- Prüfen Sie, ob der Ursprungsserver keine
Cache-Control: no-cache- oderno-store-Header sendet - Prüfen Sie die NGINX-Fehlerprotokolle:
sudo tail -f /var/log/nginx/error.log
Verbindung verweigert auf Port 80/443
Abschnitt betitelt „Verbindung verweigert auf Port 80/443“- Überprüfen Sie, ob die NSG-Regeln angewendet wurden:
az network nsg rule list --nsg-name "$(terraform output -raw nsg_name)" --resource-group "$(terraform output -raw resource_group_name)" -o table - Überprüfen Sie, ob NGINX lauscht:
ssh azureuser@<PUBLIC_IP> "sudo ss -tlnp | grep nginx"