Ngrok. Как открыть локальный сервер в мир

ngrok #1. Как открыть локальный сервер в мир

Для того чтобы понять что такое ngrok, давайте поговорим о проблемах которые он может решить.
Часто бывает нужно сделать запрос к сервису к которому не так просто получить досту. Причины проблем с доступом могут быть разными. Это может быть тестовый сервис, который работает локально дома. Но у домашнего компьютера нет выделенного ip адреса или домашний роутер не позволяет пробросить запрос. Также сервер, к которому нужно получить доступ, может находиться в корпоративной VPN сети или за фаерволом.


Но при этом, может быть необходимо развернуть локальную базу данных и получить к ней доступ. Например для тестирования и демонстрации работы мобильного приложения. Или это может быть локальный WEB сервер, а вам необходимо продемонстрировать работу сайта заказчику. Или вам просто нужно отладить удаленный php скрипт. И при этом вы хотите подключить xdebug удаленного сервера к IDE в которой работаете локально.


В этой статье поговорим о том, как ngrok решает эти задачи.

Установка ngrok

Ngrok это локальная программа, которая дает возможность открыть сетевой порт в мир. Даже если у вас нет выделенного IP или вы находитесь в VPN сети и тд. Давайте попробуем установить ngrok.

Регистрация

Вначале нам нужно зарегистрироваться на сайте ngrok. Переходим сюда и проходим регистрацию. После чего попадаем в нашу учетную запись и видим следующее.

Страница личного кабинета ngrok


Дальнейшая установка для windows и ubuntu отличается незначительно. На странице нашей учетной записи мы видим ссылки для загрузки разных версий под разные операционные системы. Выбираем нашу и скачиваем архив.

Список версий ngrok для разных операционных систем

Распаковка и установка authtoken

В скачанном архиве находится исполняемый файл ngrok. Распаковываем этот архив в папку где он будет жить. Далее заходим в эту папку с помощью командной строки или терминала и вводим следующую команду.
windows

.\ngrok help

ubuntu

./ngrok help

И видим следующее.

Вывод команды ngrok help


Дальше нужно задать наш authtoken. Это нужно для связи ngrok с нашей учетной записью.
Переходим на страницу с токеном и копируем его. Далее пишем следующую команду.


windows

.\ngrok authtoken <<ваш скопированный токен>>

ubuntu

./ngrok authtoken <<ваш скопированный токен>>

Все, установка завершена. Давайте попробуем как это работает.

Пример использования ngrok

Для примера давайте возьмем случай с локальным WEB сервером, который мы хотим открыть в мир. Берем стандартный случай когда веб сервер работает на 80 порту и доступен по адресу 127.0.0.1:80.
Все что нам нужно выполнить для того чтобы открыть доступ это выполнить следующую команду. Где http это протокол который мы будем использовать, а 80 порт на который нам будут приходить запросы.


windows

.\ngrok http 80

ubuntu

./ngrok http 80

И мы увидим следующую информацию.

статус работы ngrok


Мы видим что ngrok сгенерировал ссылки. Теперь по этим ссылка наш сервер доступен из любой точки мира.
Т.е. когда приходит запрос на сгенерированную ссылку, то этот запрос идет на облачные сервера ngrok. После чего сервер перенаправляет этот запрос локальному клиенту который мы устанавливали и запускали ранее. А этот ngrok клиент перенаправляет запрос на порт 80 локальной машины. И таким образом наш WEB сервер получает запрос и шлет ответ. Ответ проходит в обратном направлении по такой же цепочке.

Мониторинг

Во время работы ngrok поднимает маленький WEB сервер, по адресу 127.0.0.1:4040. Здесь мы можем смотреть все запросы и ответы которые приходили за время текущей сессии. Выглядит это следующим образом.

WEB панель ngrok


Эта информация может помочь в дебаггинге.


Надеюсь вам помогла эта информация. Вообще ngrok имеет больше возможностей. Там и работа с разными протоколами и возможность закрыть свой трафик паролем и много другого. Но об этом в другой раз.