С HTTPS и собственным доменом

Иногда в процессе разработки становится важным предоставить доступ к локальному приложению, работающему в Интернете. ngrok - хорошее решение, но оно имеет некоторые ограничения. Каждый раз, когда вы отключаетесь и снова подключаетесь, URL-адрес изменяется. Также платными являются такие услуги, как HTTPS.

Вы можете создать туннель с помощью SSH, с которым вы, скорее всего, уже знакомы.

Допустим, у вас есть приложение Node, запущенное на вашем локальном компьютере на порту 3000, и вы хотите, чтобы любой пользователь Интернета имел к нему доступ.

Это можно сделать в два этапа:

  1. На сервере создайте виртуальный хост, например forward.mydomain.com с обратным прокси-сервером для какого-либо неиспользуемого порта (скажем, 5000).
  2. Теперь создайте туннель, чтобы все, что поступает на порт 5000 на сервере, туннелировалось на порт вашего локального компьютера 3000 (ПК / ноутбук).

Примечание. Убедитесь, что DNS forward.mydomain.com указывает на ваш сервер. Если этого не произошло, создайте A Record с name:forward и content : ip address of your server.

Создание виртуального хоста на вашем сервере

Я использую Apache, но вы можете использовать nginx или любое другое программное обеспечение для веб-серверов.

Во-первых, вам нужно включить моды proxy и proxy_http для Apache. Вы можете сделать это, запустив:

sudo a2enmod proxy

sudo a2enmod proxy_http

Вот пример файла виртуального хоста для Apache, который создает прокси для всего, что идет с именем хоста forward.mydomain.com на локальный 5000 порт.

Если вы хотите поддерживать HTTPS, вы можете использовать Certbot. Просто следуйте их инструкциям. HTTPS также включен.

Мы настроили сервер под наши требования. Теперь нам нужно создать туннель, чтобы все, что находится на порту 5000 на сервере, поступало на порт 3000 нашего локального компьютера.

Перенаправление портов SSH

Это более простая часть. SSH уже поддерживает переадресацию портов. Все, что вам нужно сделать, это просто ssh с помощью этой команды:

ssh -R 5000:localhost:3000 [email protected]

Примечание. -R предназначен для удаленной переадресации портов.

Мы сопоставили порт сервера 5000 с localhost:3000.

И ура! Когда вы открываете https://forward.mydomain.com (если включен HTTPS - в противном случае используйте HTTP), он открывает все, что работает на вашем локальном компьютере, и любой в Интернете может получить к нему доступ. Чтобы остановиться, просто выйдите.

Лучше всего то, что вы можете туннелировать к любому порту, который хотите. На сервере ничего менять не нужно. Просто измените порт этой команды локально. Наслаждаться!