Dokumentation mit Cloudflare in einem Unterordner bereitstellen
Folge dieser Anleitung, um dein Ferndesk-Hilfezentrum mithilfe von Cloudflare Workers als Reverse-Proxy in einem benutzerdefinierten Unterordner (z. B. yourdomain.com/help) bereitzustellen.
Die Einrichtung dauert ungefähr 10 Minuten und erfordert nur geringe technische Kenntnisse. Wir haben die Anleitung so einfach wie möglich gestaltet.
Probleme bei der Einrichtung? Kontaktiere [email protected], und wir helfen dir beim Abschließen der Einrichtung.
Voraussetzungen
Ein Ferndesk-Arbeitsbereich mit Administratorzugriff
Eine Domain, die dir gehört (bereits auf Cloudflare verwiesen)
Grundlegende Vertrautheit mit dem Cloudflare-Dashboard
Für die Konfiguration eines benutzerdefinierten Unterordners muss eine aktive Zahlungsmethode hinterlegt sein.
Der kostenlose Cloudflare-Tarif erlaubt 100.000 Worker-Anfragen pro Tag. Für Hilfezentren im Produktivbetrieb mit hohem Traffic solltest du ein Upgrade auf einen kostenpflichtigen Tarif mit nutzungsbasierter Abrechnung in Betracht ziehen.
Schritt 1: Benutzerdefinierten Unterordner in Ferndesk einrichten
Konfiguriere zunächst dein Ferndesk-Hilfezentrum so, dass es einen benutzerdefinierten Unterordnerpfad verwendet.
Melde dich bei deinem Ferndesk-Arbeitsbereich an, erweitere Help Center in der linken Seitenleiste und klicke anschließend auf Customize.
Klicke auf Custom domain
Wähle die Option Custom sub-folder aus
Gib deine Domain in das Feld Domain ein (z. B.
yourdomain.com).Gib den gewünschten Unterordnerpfad in das Feld Path ein (z. B.
/helpoder/docs).Klicke auf Configure subdirectory.
Nach der Konfiguration zeigt Ferndesk einen Proxy-Host an. Konfiguriere mit diesem Host den erforderlichen DNS-Eintrag und den Reverse-Proxy in Cloudflare und notiere ihn. Du benötigst ihn beim Einrichten des Workers.
Schritt 2: Einen Cloudflare Worker erstellen
Erstelle nun einen neuen Cloudflare Worker, der als Reverse-Proxy fungiert.
Melde dich bei deinem Cloudflare-Dashboard an.
Wähle unter BUILD → Compute & AI, Workers & Pages** in der linken Seitenleiste aus .
Klicke oben rechts auf Create application.
Klicke unter Start with Hello World! auf Get started.
Benenne deinen Worker mit einem aussagekräftigen Namen wie
ferndesk-reverse-proxyund klicke anschließend auf Deploy.
Schritt 3: Workerrouten konfigurieren
Richte die Routing-Regel ein, die den Traffic von deinem benutzerdefinierten Unterordner an den Cloudflare Worker weiterleitet.
Wechsle in den Worker-Einstellungen zum Tab Settings.
Scrolle zu Domains & Routes und klicke auf Add.
Ein modales Fenster wird geöffnet. Wähle die Option Route aus.
Wähle im Dropdown-Menü Zone deine Domain aus (z. B.
yourdomain.com).Gib im Feld Route das Muster für deinen Unterordnerpfad ein. Verwende
*yourdomain.com/help*, um alle Anfragen an den Pfad/helpund seine Unterpfade zu erfassen.Lass Failure mode aus Sicherheitsgründen auf Fail closed (block) eingestellt.
Klicke auf Add route.
WICHTIG: Du musst eine separate Route für das Ferndesk-Asset-Verzeichnis _ferndesk hinzufügen. Führe die folgenden Schritte aus, um die Einrichtung abzuschließen.
Schritt 3b: Die Route _ferndesk hinzufügen
Scrolle zu Domains & Routes und klicke auf Add.
Ein modales Fenster wird geöffnet. Wähle die Option Route aus.
Wähle im Dropdown-Menü Zone deine Domain aus (z. B.
yourdomain.com).Gib im Feld Route das Muster für deinen Unterordnerpfad ein. Verwende
*yourdomain.com/_ferndesk*, um alle Anfragen an den Pfad/_ferndeskund seine Unterpfade zu erfassen.Lass Failure mode aus Sicherheitsgründen auf Fail closed (block) eingestellt.
Klicke auf Add route.
Schritt 4: Den Worker-Code bearbeiten
Aktualisiere nun den Worker-Code, damit er die Logik des Reverse-Proxys verarbeitet. Der Worker fängt Anfragen an deinen Unterordner ab und leitet sie an Ferndesk weiter.
Klicke auf Edit code (oder öffne den Code-Editor über das Worker-Dashboard).
Ersetze den gesamten
worker.js-Code durch das folgende Reverse-Proxy-Skript.const HELP_HOST = 'your-company.hc.ferndesk.com'; // your Ferndesk help domain const PROXY_PREFIX = '/help'; // the subfolder you chose in Ferndesk const PROXY_VERSION = '2'; addEventListener('fetch', (event) => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const originalUrl = new URL(request.url); // Keep canonical trailing-slash behaviour on the edge if (originalUrl.pathname.endsWith('/') && originalUrl.pathname !== '/') { originalUrl.pathname = originalUrl.pathname.slice(0, -1); return Response.redirect(originalUrl.toString(), 301); } // Only intercept the help subtree (and the help assets) if ( originalUrl.pathname !== PROXY_PREFIX && !originalUrl.pathname.startsWith(`${PROXY_PREFIX}/`) && !originalUrl.pathname.startsWith('/_ferndesk/') ) { return fetch(request); } // Build the upstream request with the prefix removed const upstreamUrl = new URL(originalUrl.toString()); upstreamUrl.hostname = HELP_HOST; if (upstreamUrl.pathname === PROXY_PREFIX) { upstreamUrl.pathname = '/'; } else if (upstreamUrl.pathname.startsWith(`${PROXY_PREFIX}/`)) { upstreamUrl.pathname = upstreamUrl.pathname.slice(PROXY_PREFIX.length) || '/'; } // Enables edge caching: tells Ferndesk this render belongs to your // subfolder so it gets its own cache entry. upstreamUrl.searchParams.set('__bp', PROXY_PREFIX); const proxyRequest = new Request(upstreamUrl.toString(), request); // Let the help app know we are hosted under the subfolder proxyRequest.headers.set('X-Ferndesk-Base-Path', PROXY_PREFIX); proxyRequest.headers.set('X-Forwarded-Host', originalUrl.host); proxyRequest.headers.set('X-Ferndesk-Original-Host', originalUrl.host); proxyRequest.headers.set('X-Ferndesk-Proxy-Version', PROXY_VERSION); // Handle redirects ourselves so renamed articles redirect visitors on // this domain instead of being followed silently. const response = await fetch(proxyRequest, { redirect: 'manual' }); if (response.status >= 300 && response.status < 400) { return rewriteRedirect(response, originalUrl); } return response; } // Translates an upstream redirect (on the Ferndesk help host) back onto // this site's host and subfolder. External redirects pass through as-is. function rewriteRedirect(response, originalUrl) { const location = response.headers.get('location'); if (!location) return response; const target = new URL(location, `https://${HELP_HOST}`); if (target.hostname !== HELP_HOST) return response; target.protocol = 'https:'; target.host = originalUrl.host; target.searchParams.delete('__bp'); const alreadyPrefixed = target.pathname === PROXY_PREFIX || target.pathname.startsWith(`${PROXY_PREFIX}/`); if (!alreadyPrefixed) { target.pathname = target.pathname === '/' ? PROXY_PREFIX : PROXY_PREFIX + target.pathname; } // Response headers from fetch are immutable; copy to edit Location. const rewritten = new Response(response.body, response); rewritten.headers.set('location', target.toString()); return rewritten; }Ersetze
HELP_HOSTdurch die tatsächliche Ferndesk-Domain, die dir bei der Konfiguration deines benutzerdefinierten Unterordners bereitgestellt wurde. ErsetzePROXY_PREFIX, wenn du einen anderen Unterordnerpfad verwendest (z. B./docsstatt/help).Du hast deinen Unterordner bereits vor einiger Zeit eingerichtet? Ersetze einfach deinen Worker-Code durch die obige Version. Alles funktioniert weiterhin genau wie zuvor, und die Seiten deines Hilfezentrums werden über unser Edge-Netzwerk bereitgestellt – in der Regel mit einer Ladezeit von weniger als 100 ms.
Klicke auf Deploy, um deine Änderungen zu veröffentlichen.
Schritt 5: Einrichtung überprüfen
Teste, ob dein Hilfezentrum jetzt unter deinem benutzerdefinierten Unterordnerpfad erreichbar ist.
Öffne einen neuen Browser-Tab und rufe
https://yourdomain.com/helpauf.Dein Ferndesk-Hilfezentrum sollte mit deinem Branding geladen werden.
Teste einige Seiten, indem du auf Links klickst, um sicherzustellen, dass die Navigation ordnungsgemäß funktioniert.
Wenn dein Hilfezentrum erfolgreich geladen wird und deine Inhalte anzeigt, funktioniert der Reverse-Proxy ordnungsgemäß! Deine Kunden können jetzt über deine benutzerdefinierte Domain auf dein Hilfezentrum zugreifen.
Etwas ist schiefgelaufen? Kontaktiere uns unter [email protected], und wir helfen dir beim Abschließen der Einrichtung.
Fehlerbehebung
Problem | Ursache | Lösung |
|---|---|---|
Fehler „404 Not Found“ beim Aufrufen der URL | Die Route ist nicht korrekt konfiguriert oder der Worker wurde nicht bereitgestellt. | Überprüfe, ob das Routenmuster genau mit deiner Domain und deinem Unterordnerpfad übereinstimmt. Vergewissere dich, dass der Worker bereitgestellt und im Abschnitt „Domains & Routes“ aktiv ist. |
Leere Seite oder fehlerhafte Darstellung | Die Ferndesk-Domain im Worker-Code ist falsch. | Überprüfe noch einmal, ob die Variable |
CSS und Bilder werden nicht geladen | Relative URLs in der Ferndesk-Antwort werden nicht umgeschrieben. | Möglicherweise musst du das Umschreiben von Antwort-Headern hinzufügen, damit relative Assets verarbeitet werden. Wende dich an den Ferndesk-Support, um eine erweiterte Proxy-Konfiguration zu erhalten. |
Worker-Anfragen auf 100.000 pro Tag begrenzt | Das Ratenlimit des kostenlosen Cloudflare-Tarifs wurde erreicht. | Führe ein Upgrade deines Cloudflare-Tarifs auf eine nutzungsbasierte Abrechnung durch, um unbegrenzt viele Anfragen über das kostenlose Kontingent hinaus zu ermöglichen. |