Зачем строить сервер ngrok
При веб-разработке нам необходимо открыть локальный веб-сайт для доступа из внешней сети (например, когда я занимаюсь локальной разработкой WeChat).
ngrok — это инструмент обратного прокси, который мы можем скачать напрямуюОфициальный сайтОднако из-за того, что официальный сервер сайта находится за границей, он относительно медленный, а бесплатная версия не поддерживает привязку доменных имен второго уровня.
что приготовить
- Linux-сервер общедоступной сети (желательно centos7, один шаг)
- независимое доменное имя
Если вы знакомы с докером, вы можете запустить то, что я сделал напрямуюЗеркало сервера ngrokначатьGitHub.com/Jueying/doc…
шаг
1. Установите git, golang и openssl
yum install -y git golang openssl
Версия git и версия golang не должны быть слишком старыми, Centos7 по умолчанию устанавливает git1.8.3 и go1.8.3.
2. клонировать проект ngrok на локальный
git clone https://github.com/inconshreveable/ngrok.git /usr/local/ngrok
3. Создайте сертификат
# 这里替换为自己的独立域名
export NGROK_DOMAIN="huahongbin.cn"
#进入到ngrok目录生成证书
cd /usr/local/ngrok
# 下面的命令用于生成证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
# 将我们生成的证书替换ngrok默认的证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
4. Скомпилируйте сервер и клиент для разных платформ
# 编译64位linux平台服务端
GOOS=linux GOARCH=amd64 make release-server
# 编译64位windows客户端
GOOS=windows GOARCH=amd64 make release-server
# 如果是mac系统,GOOS=darwin。如果是32位,GOARCH=386
После выполнения вы увидите сервер в каталоге ngrok/bin и его подкаталогах.ngrokdи клиентngrok.exe.
5. Запустите сервер
# 指定我们刚才设置的域名,指定http, https, tcp端口号,端口号不要跟其他程序冲突
./bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":8082" -tunnelAddr=":443"
6. Запустите клиент
Скопируйте ngrok.exe в локальную папку (можно использовать winscp) и создайте в папке новый файл конфигурации ngrok.cfg со следующим содержимым:
server_addr: "huahongbin.cn:443"
trust_host_root_certs: false
Замените доменное имя своим собственным независимым доменным именем и замените порт туннельным портом, установленным для запуска сервера ngrok.
Затем используйте следующую команду в cmd для запуска:
ngrok.exe -subdomain=jueying -config=ngrok.cfg 80
80 — это локальный порт, который вы хотите проксировать
введите в браузереhttp://127.0.0.1:4040Вы можете увидеть конкретную информацию о запросе.
Общая проблема
-
При компиляции он застревает на следующих шагах
go get gopkg.in/yaml.v1Это связано с тем, что версия Git слишком низкая. Обновите версию git сервера до 1.7.9.5 или выше. -
Потому что ngrok должен загрузить некоторые зависимости с иностранных веб-сайтов при первой компиляции. Может быть медленным или даже тайм-аут. Попробуйте это несколько раз, или вы знаете.