С HTTPS и собственным доменом
Иногда в процессе разработки становится важным предоставить доступ к локальному приложению, работающему в Интернете. ngrok - хорошее решение, но оно имеет некоторые ограничения. Каждый раз, когда вы отключаетесь и снова подключаетесь, URL-адрес изменяется. Также платными являются такие услуги, как HTTPS.
Вы можете создать туннель с помощью SSH, с которым вы, скорее всего, уже знакомы.
Допустим, у вас есть приложение Node, запущенное на вашем локальном компьютере на порту 3000
, и вы хотите, чтобы любой пользователь Интернета имел к нему доступ.
Это можно сделать в два этапа:
- На сервере создайте виртуальный хост, например
forward.mydomain.com
с обратным прокси-сервером для какого-либо неиспользуемого порта (скажем,5000
). - Теперь создайте туннель, чтобы все, что поступает на порт
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), он открывает все, что работает на вашем локальном компьютере, и любой в Интернете может получить к нему доступ. Чтобы остановиться, просто выйдите.
Лучше всего то, что вы можете туннелировать к любому порту, который хотите. На сервере ничего менять не нужно. Просто измените порт этой команды локально. Наслаждаться!