ngrok, czyli tunelowanie ruchu

Ngrok to mała aplikacja, która umożliwia tunelowanie ruchu. Przydatne wtedy, kiedy istnieje potrzeba wystawienia “czegoś” publicznie na świat. Tym “czymś” może być strona www, aplikacja, serwer. Działa to w następujący sposób: uruchomiona aplikacja ngrok.exe łączy się z chmurą ngrok, która akceptuje ruch na publicznym adresie. Otrzymany ruch z publicznego adresu przekazuje do procesu ngrok.exe uruchomionego na naszym komputerze, który dalej przekazuje owy ruch do lokalnej aplikacji/serwera. Poniższy rysunek, zaczerpnięty z oficjalnej strony, dobrze obrazuje ten schemat.

Publiczna strona www

Najprostszym przykładem wykorzystania jest upublicznienie aplikacji www. Wystarczy uruchomić proces ngrok.exe z parametrem http 80 i to wszystko. Aplikacja która lokalnie dostępna jest pod adresem http://localhost/webapp/ będzie dostępna w sieci pod wskazanym przez ngrok adresem http/https, np: http://2918c9ea.ngrok.io/webapp/. Ruch tunelować można na dowolny port, przykładowo uruchamiając ngrock.exe http 8082 upublicznimy aplikacje która lokalnie znajduje się pod adresem http://localhost:8082/webapp/.

Publiczny serwer www – tunelowanie webhook’a

Podczas integracji z różnymi systemami mamy możliwość skorzystania z mechanizmu notyfikacji zwagengo webhook’ami. Webhook to żądanie HTTP (zazwyczaj typu POST) na zadany przez nas adres URL mające na celu poinformowanie nas o tym, iż zadziała się jakaś akcja, zdarzenie.
Aplikacje takie jak GitHub, Slack czy Twilio posiadają takie mechanizmy notyfikacji. Ja natomiast, jakiś czas temu, miałem przyjemność integrować się z systemem HelloSign, które służy do sygnowania dokumentów podpisem elektronicznym. Webhook wysyłany przez HelloSign mógł być odebrany tylko i wyłącznie przez coś, co było publicznie dostępne w sieci. API, które miało odebrać to żądanie/notyfikację, właśnie było implementowane przeze mnie. Nie miałem czasu, ani możliwości, wystawić go publicznie. Tutaj z pomocą przyszło właśnie narzędzie ngrok, które uruchomione z odpowiednimi parametrami przekierowało webhook’a do API uruchomionego lokalnie na moim komputerze.

Tym oto sposobem narzędzie ngrok oraz jego tunelowanie ruchu pozwoliło mi w szybki i wygodny sposób poprawnie zaimplementować odbiór notyfikacji.

Tunelowanie ruchu to nie jedyne możliwości narzędzia ngrok. Listę możliwości znaleźć można na oficjalnej stronie produktu. Niektóre z nich są darmowe, inne płatne. Niemniej jednak, zachęcam do zapoznania się z nimi, ponieważ nigdy nie wiadomo co będzie nam potrzebne w przyszłości.

Podbij ↑

12 thoughts on “ngrok, czyli tunelowanie ruchu

  1. Dobry program, ale jest problem z adresami wordpressa,bo jak się zainstaluje pod adresem 127.0.0.1 to wordpress przekierowywuje automatycznie na ten adres i pojawia się brak dostępu do internetu. Jak serwer jest na laptopie to na tablecie trudno podejrzeć wordpressa.

      • Wygląda to tak:
        Mam wordpress na adresie http://localhost/blog/ z laptopa idzie poprawnie, ale na tablecie wordpress ma przykrą funkcję, że przekierowywuje adres na ten zapisany w ustawieniach. Czyli jak wpiszę na tablecie dajmy na to 112.ngrok.com/blog/ to następuje od razu przekierowanie na localhost/blog/ i pojawia się napis brak łączności z internetem. To dotyczy tylko wordpressa, bo jak wykonam stronę przy użyciu dajmy na to programem Website x5 z plikami statycznymi html to na tablecie można wszystko oglądać bez problemu. Problem dotyczy tylko wordpressa.

        • Toiew,
          Problem leży po stronie WordPress’a i jego przekierowaniu, a nie ngrok’a.
          Spróbuj z inną aplikacją, a zobaczysz, że działa poprawnie.
          Dodatkowo, na porcie 4040 ngrok udostępnia małą aplikację w której możesz podglądnąć wszystkie żądania, które do niego trafiły.

  2. Pingback: Wtorek z UltraSamoukiem – Bezpieczeństwo – UltraSamouk.pl
  3. Czy są jakieś podobne programy do ngrok które wystawiają serwer lokalny na stałe wl internet bo jak tylko zamknę terminal ngrok.exe link wygenerowany przez ngrok do mojej strony nie działa i nie można na nią wejść.

Skomentuj Faustyna Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *