https://d226lax1qjow5r.cloudfront.net/blog/blogposts/local-development-nexmo-ngrok-tunnel-dr/nexmo-ngrok-tunnel.jpg

Verbinden Sie Ihren lokalen Entwicklungsserver mit der Vonage-API über einen Ngrok-Tunnel

Zuletzt aktualisiert am November 12, 2020

Lesedauer: 6 Minuten

Oftmals bei der Entwicklung von Demos für Konferenzen, Schreiben Blogbeiträgen und Anleitungen oder einen Leitfaden für unser Entwicklerportal erstellen müssen wir unsere lokale Entwicklerumgebung dem öffentlichen Internet aussetzen, damit sie für die Vonage-APIs erreichbar ist.

ngrok diagrangrok diagra

Warum verwenden wir ngrok?

Unser Team für Entwicklerbeziehungen arbeitet an verschiedenen Orten und ist oft unterwegs, so dass wir manchmal von zu Hause aus arbeiten, oder wir sind in unserem Büro in London oder in einem Café. Um eingehende Webhooks empfangen zu können, müssten wir einen lokalen Server einrichten, die richtigen Ports weiterleiten, sicherstellen, dass der DNS unsere neue öffentliche IP-Adresse hat und weitergegeben wird, SSL konfigurieren und so weiter. Dies ist nicht nur unpraktisch, sondern in bestimmten Situationen wahrscheinlich unmöglich. Aber mit ngrok können wir unseren lokalen Server auf seiner eigenen Subdomain mit https-Unterstützung mit einem einzigen Befehl einrichten.

ngrok in terminalngrok in terminal

Bitte beachten Sie jedoch, dass Sie in einem Unternehmensnetzwerk keine Remote-Tunnel erstellen sollten, ohne dies vorher mit Ihrem Netzwerkadministrator abzustimmen. Weitere Einzelheiten finden Sie im Abschnitt über Sicherheitsbedenken weiter unten.

Die andere Möglichkeit besteht darin, unseren Code auf einem entfernten Server bereitzustellen. Mit Anbietern wie Heroku und Digital Ocean wird dies immer einfacher, aber es ist immer noch eine gewisse Einrichtung und normalerweise mit Kosten verbunden. Wenn ich aber nur ein NCCO (Anrufsteuerungsobjekt) JSON-Datei zu liefern, ist es unwahrscheinlich, dass ein anderer Dienst einfacher ist als dieser;

python -m SimpleHTTPServer &> /dev/null & ngrok http 8000

Mit ngrok in Fahrt kommen

Die Website ngrok-Website gibt es Downloads für die meisten gängigen BetriebssystemeSie enthält auch eine Anleitung zur Installation von ngrok, die im Wesentlichen darin besteht, das Programm zu entpacken. Ich neige dazu, die ngrok-Binärdatei in /usr/local/bin (oder ein anderes Verzeichnis in meinem $PATH) auf Mac/Linux zu verschieben, damit ich es einfach von der Kommandozeile aus aufrufen kann, ohne den kompletten Pfad zur Binärdatei angeben zu müssen. How-to Geek hat einen großartigen Artikel über das Editieren des System PATH unter Windows wenn Sie auf einem Windows-Rechner ähnlich vorgehen möchten.

Nach der Installation ist die Ausführung von ngrok so einfach wie der folgende Befehl, wobei 8000 die Nummer des Ports ist, auf dem Ihr lokaler Server läuft

ngrok http 8000

Dies wird ngrok in Ihrem Terminal starten.

Nach dem Start sollten Sie die öffentlichen URLs sehen, die ngrok für Sie erstellt hat, sowie einige andere Informationen wie die Region, in der Ihr Tunnel läuft, wie viele aktuelle Verbindungen er hat und ein Protokoll der empfangenen HTTP-Anfragen.

Da ngrok in Ihrem Terminal läuft, müssen Sie wahrscheinlich ein Terminalfenster für Ihren lokalen Server und ein separates Terminalfenster für ngrok geöffnet haben. Alternativ können Sie auch GNU-Bildschirm oder verwenden. tmux. Die Dokumentationen für beide sind ziemlich umfangreich. Sie können einige gute Informationen über die Grundlagen von screen finden, wenn Sie nach "quickstart GNU screen <operating system>"

Wiederholung von Anfragen

Eine der nützlichsten Funktionen von ngrok ist die Möglichkeit, Anfragen zu wiederholen.

ngrok web consolengrok web console

Wenn Sie ngrok starten, ist eine der aufgelisteten URLs für die Weboberfläche. Diese Weboberfläche läuft lokal auf Ihrem Rechner, normalerweise auf Port 4040, und liefert eine ganze Reihe von Informationen über Ihren laufenden Tunnel, darunter auch Metriken über Anfragen.

Auf der Registerkarte "Inspektion" befindet sich auch eine Liste aller eingegangenen Anfragen. Diese Liste enthält die Art der Anfrage (GET, POST, HEAD usw.), die angeforderte URL und den HTTP-Antwortcode, der von Ihrem lokalen Server gesendet wurde (200, 404 usw.). Wenn Sie auf eine Anfrage klicken, werden weitere Informationen angezeigt, darunter die Header und sogar die Rohdaten der Anfrage/Antwort. Dies kann beim Debuggen von API-Interaktionen von unschätzbarem Wert sein.

Nachdem Sie eine Anfrage aus der Liste ausgewählt haben, können Sie wiedergeben diese Anfrage wiederholen. Dadurch wird die Anfrage erneut an Ihren lokalen Server gesendet! Wenn Sie also zum Beispiel eine Anwendung entwickeln, die die Vonage SMS API für eingehende SMS verwenden, müssen Sie nicht erst eine weitere SMS senden, um den Webhook auszulösen, sondern können einfach die letzte eingehende SMS-Anfrage erneut abspielen.

Zusätzliche Merkmale

ngrok hat eine Menge zusätzlicher Funktionen, einschließlich einer API, also empfehle ich Ihnen dringend ihre Dokumentation zu lesen zu lesen, um sich mit allem vertraut zu machen, was zur Verfügung steht, denn ich werde hier nur einige der gängigsten Funktionen vorstellen, die wir während der Entwicklung verwenden.

  • Nur HTTPS - Standardmäßig öffnet ngrok Endpunkte sowohl für http- als auch für https-Verkehr. -bind-tls=true lauscht nur auf https-Anfragen

  • Region wechseln - Standardmäßig verwendet ngrok die Region us - Vereinigte Staaten (Ohio), aber Sie können zwischen verschiedenen Regionen wählen, die möglicherweise näher sind

  • Hinzufügen von HTTP Basic Auth - Diese Funktion erfordert ein ngrok-Konto, daher müssen Sie sich zuerst anmelden und Ihren ngrok-Client zuerst autorisieren

Bezahlte Funktionen

Alles, was wir bisher besprochen haben, war ohne ein ngrok-Konto oder mit einem kostenlosen Konto verfügbar. Die folgenden Funktionen sind nur mit einem bezahlten ngrok-Abonnement verfügbaraber wir denken, dass sie sehr nützlich sind, also habe ich sie mit aufgenommen.

  • Benutzerdefinierte und reservierte Domänen. Standardmäßig vergibt ngrok einen zufälligen hexadezimalen Tunnelnamen für Sie. Dieser Name ändert sich jedes Mal, wenn Sie ngrok neu starten (z.B. wenn Sie Ihr Terminal versehentlich schließen). Es ist ärgerlich, dass Sie bei jedem Neustart Ihres Terminals alle Webhook-URLs aktualisieren müssen. Wenn Sie eine benutzerdefinierte oder reservierte Domain verwenden, bleibt die URL jedes Mal gleich, wenn Sie ngrok starten. Sie können noch einen Schritt weiter gehen, indem Sie Ihre eigene benutzerdefinierte Domäne.

  • IP-Whitelisting (konfiguriert über das ngrok-Dashboard). Das Erstellen eines Tunnels in Ihr lokales Netzwerk ist nicht ganz unbedenklich. Sie können diese Bedenken ausräumen, indem Sie nur die IP-Adressen auf die Whitelist setzen, die auf Ihren lokalen Server zugreifen können sollen. Sie finden eine Liste der Vonage IP-Bereiche, die Sie auf die Whitelist setzen sollten in unserer Wissensdatenbank.

Sicherheitsbedenken

Wenn Sie einem Netzwerkadministrator den Tag verderben wollen, sagen Sie ihm, dass Sie einen offenen Reverse-Proxy in sein lokales Netzwerk einschleusen wollen. ngrok ist eine fantastische Anwendung, die wir hier bei Vonage täglich nutzen, aber Sie sollten sich der Sicherheitsimplikationen des Tunnelns durch Ihre Netzwerk-Firewall bewusst sein. Sprechen Sie mit Ihrem Netzwerkadministrator, bevor Sie ngrok in Ihrem Arbeitsnetzwerk verwenden.

Wenn Sie zu Hause, in einem Café oder irgendwo anders arbeiten, wo es keinen Netzwerkadministrator gibt, mit dem Sie sprechen können, oder wo Sie der Netzwerkadministrator sind, dann empfehlen wir die Verwendung von ngrok mit HTTP Basic Auth, IP-Whitelisting und HTTPS aufgezwungen.

Sie finden Informationen über Verwendung von HTTP Basic Auth mit Vonagesowie unsere öffentlichen IP-Adressen in unserer Wissensdatenbank.

Alternativen

Teilen Sie:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Aaron BassettVonage Ehemalige

Aaron war ein Entwickler-Befürworter bei Nexmo. Aaron ist ein erfahrener Software-Ingenieur und Möchtegern-Digitalkünstler, der häufig Dinge mit Code oder Elektronik entwickelt, manchmal auch beides. Wenn er an etwas Neuem arbeitet, erkennt man das in der Regel am Geruch von brennenden Bauteilen in der Luft.