Назад | Перейти на главную страницу

Подключение по https к серверному приложению на виртуальной машине GCE через туннель ngrok

Я наблюдаю странное поведение с ngrok на виртуальной машине GCE.

Я запускаю «вытесняемый» экземпляр виртуальной машины со статическим внешним IP-адресом и обычно запускаю на нем ngrok. Я получаю URL-адрес, который сопоставляет входящий запрос https с http на localhost. Я также могу проверить туннель, все работает отлично. Я создаю снимок загрузочного диска, подключенного к этой ВМ. Выключаю ВМ.

Затем я создаю другую виртуальную машину GCE с такой же конфигурацией, сетевыми настройками (конечно, с другим статическим IP-адресом) и т. Д., За исключением того, что я отключаю вытеснение. Загрузочный диск также создается с помощью приведенного выше снимка, поэтому он является точной копией диска для вытесняемой виртуальной машины, указанной выше. Запускаю ngrok на этой невыгружаемой машине. Нгрок ни на что не жалуется, похоже, что туннель пустил.

Снимок ngrok после запуска туннеля на бесперебойной виртуальной машине

Однако туннель не работает. Туннель не найден

Может ли кто-нибудь указать мне на возможные причины / направления расследования?

Я уже безуспешно пробовал следовать:

  1. Вход в ngrok и использование ngrok authtoken <token> перед началом туннеля
  2. переписываем заголовок хоста: ngrok http -host-header=rewrite localhost:3000

Я пробовал следовать вашим шагам в своем тестовом проекте и не обнаружил проблем.

Пожалуйста, взгляните на мои шаги ниже:

  1. создать экземпляр ВМ с сетевыми тегами http-server и https-server:
  2. создать правила брандмауэра, разрешающие входящие соединения HTTP / HTTPS:
gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server

gcloud compute firewall-rules create default-allow-https --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
  1. установить ngrok и php:
instance-8:~$ sudo apt update
instance-8:~$ sudo apt install snapd
instance-8:~$ sudo snap install ngrok
instance-8:~$ sudo apt install php7.2-cli
  1. подключиться ngrok на счет:
instance-8:~$ ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxgmfHM
  1. запустить встроенный веб-сервер php с фиктивной страницы:
instance-8:~$ php -S localhost:8000
PHP 7.2.24-0ubuntu0.18.04.6 Development Server started at Mon Jul  6 17:19:31 2020
Listening on http://localhost:8000
Document root is /home/username
Press Ctrl-C to quit.
  1. Начало ngrok:
instance-8:~$ ngrok http -host-header=rewrite localhost:8000
                                                                                                                                                                              
ngrok by @inconshreveable                                                                                                                                     (Ctrl+C to quit)
                                                                                                                                                                              
Session Status                online                                                                                                                                          
Account                       XXX (Plan: Free)                                                                                                                       
Version                       2.3.35                                                                                                                                          
Region                        United States (us)                                                                                                                              
Web Interface                 http://127.0.0.1:4040                                                                                                                           
Forwarding                    http://1537504102c2.ngrok.io -> http://localhost:8000                                                                                           
Forwarding                    https://1537504102c2.ngrok.io -> http://localhost:8000                                                                                          
                                                                                                                                                                              
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                     
                              2       0       0.03    0.01    0.00    0.00                                                                                                    
                                                                                                                                                                              
HTTP Requests                                                                                                                                                                 
-------------                                                                                                                                                                 
                                                                                                                                                                              
GET /favicon.ico               404 Not Found                                                                                                                                  
GET /                          200 OK       
  1. проверьте соединение, и оно работает как положено.
  2. создать новый экземпляр ВМ на основе снимка существующего экземпляра ВМ:
gcloud compute disks snapshot instance-8 --snapshot-names=snapshot-1 --zone=europe-west3-a --storage-location=europe-west3
gcloud compute disks create instance-10 --size=10 --zone=europe-west3-a --source-snapshot=snapshot-1 --type=pd-standard
gcloud compute instances create instance-10 --zone=europe-west3-a --machine-type=e2-medium --tags=http-server,https-server --disk=name=instance-10,device-name=instance-10,mode=rw,boot=yes,auto-delete=yes --reservation-affinity=any
  1. запустить встроенный веб-сервер php с фиктивной страницы:
instance-10:~$ php -S localhost:8000
PHP 7.2.24-0ubuntu0.18.04.6 Development Server started at Mon Jul  6 17:42:59 2020
Listening on http://localhost:8000
Document root is /home/username
Press Ctrl-C to quit.
  1. Начало ngrok:
instance-10:~$ ngrok http -host-header=rewrite localhost:8000
Your account 'XXX' is limited to 1 simultaneous ngrok client session.
Active ngrok client sessions in region 'us':
  - ts_1eK49pNAq8zIKDN2ikKdCvVhwHz (35.XXX.153.XXX)

ERR_NGROK_108
  1. стоп ngrok в instance-8 и начни с instance-10:
instance-10:~$ ngrok http -host-header=rewrite localhost:8000
ngrok by @inconshreveable                                                                          (Ctrl+C to quit)
                                                                                                                   
Session Status                online                                                                               
Account                       XXX (Plan: Free)                                                            
Version                       2.3.35                                                                               
Region                        United States (us)                                                                   
Web Interface                 http://127.0.0.1:4040                                                                
Forwarding                    http://38c2f5d9f673.ngrok.io -> http://localhost:8000                                
Forwarding                    https://38c2f5d9f673.ngrok.io -> http://localhost:8000                               
                                                                                                                   
Connections                   ttl     opn     rt1     rt5     p50     p90                                          
                              4       0       0.34    0.39    0.00    0.00                                         
                                                                                                                   
HTTP Requests                                                                                                      
-------------                                                                                                      
                                                                                                                   
GET /favicon.ico               404 Not Found                                                                       
GET /                          200 OK                                                                              
  1. проверьте соединение, и оно работает как положено.

Мне удалось воспроизвести вашу проблему, когда я проверил соединение с выключенным ngrok в instance-8 используя старые ссылки, пока ngrok бежал в instance-10:

Туннель 1537504102c2.ngrok.io не найден

У меня такой же результат был, когда я проверял подключение к выключенному ngrok в instance-10 используя старые ссылки, пока ngrok бежал в instance-8.

Я думаю, что в вашем случае это может быть проблема в ngrok сторону, и вы должны связаться с ними по электронной почте contact@ngrok.com.