Ngrok настраивает несколько портов в одном домене

Можно ли открыть несколько портов в ngrok в том же домене?

Что-то вроде:

Переход к http://example.ngrok.com:50001 -> 127.0.0.1:50001

Переход к http://example.ngrok.com:50002 -> 127.0.0.1:50002

Я работаю в windows, и это пригодится для отладки с IIS Express


person fravelgue    schedule 27.08.2014    source источник
comment
Для этого у вас может быть одновременно запущено 2 клиента ngrok.   -  person stringo0    schedule 16.06.2015
comment
Мне нужен номер порта в URL-адресе ngrok для целей тестирования. Наличие нескольких запущенных клиентов ngrok не поможет в этом случае.   -  person Per Quested Aronsson    schedule 10.08.2015


Ответы (4)


Да, можно использовать несколько одновременных туннелей в одном hostname !

Все, что вам нужно сделать, это объявить их в вашем файле конфигурации, например:

authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
  first-app:
    addr: 50001
    proto: http
    hostname: example.ngrok.com
    host_header: first-app.example.ngrok.com
  second-app:
    addr: 50002
    proto: http
    hostname: example.ngrok.com
    host_header: second-app.example.ngrok.com        

И запустите их с помощью:

ngrok start --all

Посмотрите в документации такие параметры, как hostname, subdomain, authtoken и host_header. Надеюсь, это поможет вам!

P.S Для бесплатного плана удалите пользовательский хост и часть заголовка, вот так это будут разные домены.

authtoken: 6yMXA63qefMZqCWSCHaaYq_5LufcciP1rG4LCZETjC6V
tunnels:
  first:
    addr: 3002
    proto: http    
  second:
    addr: 8080
    proto: http

ПРИМЕЧАНИЯ:

person robe007    schedule 28.07.2016
comment
Работает ли это так, как действительно нужно OP? Разве это не создает имя хоста для первого приложения и другое имя хоста для второго приложения? - person user2152081; 12.02.2017
comment
@ user2152081 Да, конечно, работает так, как нужно OP! Вы можете использовать один и тот же hostname в разных apps. Я отредактировал свой вопрос, чтобы показать, как это сделать. Более подробная информация содержится в изначально опубликованной ссылке на документы. - person robe007; 19.02.2018
comment
Начиная с ngrok 2.2.8 это не работает. Это не удается со следующей ошибкой: - person cap10morgan; 26.02.2018
comment
Начиная с ngrok 2.2.8 это не работает. Выдает следующую ошибку: Tunnel session failed: The tunnel 'http://example.ngrok.com' is already bound to another tunnel session ERR_NGROK_334 ... для зарезервированных имен хостов. - person cap10morgan; 26.02.2018
comment
@ cap10morgan Это немного странно. Я отредактировал ответ, добавив дополнительные параметры, такие как authtoken и host_header. Пожалуйста, сначала прочтите документы, чтобы понять, как они работают. - person robe007; 26.02.2018
comment
@ cap10morgan И, пожалуйста, не забудьте сначала установить свой auth_token. См. здесь - person robe007; 26.02.2018
comment
он говорит, что мне нужно обновить :( Tunnel session failed: Only Pro & Business plans may bind custom hostnames. Failed to bind the custom hostname 'sajilni.example.ngrok.com' for the account 'shareef hiasat'. This account is on the 'Free' plan. Upgrade to a paid plan at: https://dashboard.ngrok.com/billing/plan ERR_NGROK_314 мне пришлось удалить собственное имя хоста - person shareef; 04.04.2018
comment
@shareef Если вы посмотрите на историю выпусков, то вы добавили мой исходный ответ - person robe007; 04.04.2018
comment
Это все еще не работает. Вы не можете использовать несколько туннелей на одном имени хоста. - person Gabriel Syme; 22.05.2018
comment
Это не работает для бесплатных планов. Вам необходимо перейти на профессиональный или бизнес-план. - person RavenHursT; 24.05.2018
comment
Потратив полдня на поиски этого и даже зарегистрировав профессиональный аккаунт, я решил, что это не то, что ngrok поддерживает. Весь веб-трафик через сгенерированные поддомены на TLD ngrok.io будет только прослушивать порт :80. Чтобы прослушивать другой нестандартный порт HTTP, вы должны использовать их зарезервированные домены TLS. Но им случайным образом назначается порт при регистрации, и они не будут прослушивать тот же домен, что и HTTP-туннель. В конце концов, этот ответ не дает допустимое решение вопроса OP. отрицательное голосование 2 указывает на то, что 2 других, а не 2, тратят время на погоню за этим - person RavenHursT; 24.05.2018
comment
С платным планом вам просто нужно иметь два разных example.ngrok.com имени хоста, но это работает !!! - person A. Attia; 03.08.2018
comment
Я согласен с RavenHursT - person PeopleMoutainPeopleSea; 31.01.2019
comment
Это не работает! Нгрокская сторона туннеля ограничена портом 80, как предполагает RavenHursT. - person Code Junkie; 13.02.2019
comment
Голосование против, так как это, к сожалению, больше не работает - person Alex; 15.02.2019
comment
Вы спаситель. Это отлично работает для бесплатного плана по состоянию на июнь 2020 года. - person Maximiliano Guerra; 08.06.2020
comment
@MaximilianoGuerra Привет, даже я пытаюсь работать над этим, как ты заставил это работать, любая помощь будет очень признательна, я не могу это сделать. Я хочу попробовать два кода Python, работающие с использованием ngrok и прослушивающие разные порты в одном домене . - person RAHUL VISHWAKARMA; 22.06.2020
comment
@RAHULVISHWAKARMA Я сделал в точности как последний код в ответе. В моем случае мне понадобилось 3 порта, но каждый из них создал 2 туннеля (http и https), что превышает ограничение на 4 туннеля в бесплатной версии. Я изменил конфигурацию, чтобы создать только https-туннели, и все работало отлично, осталось одно место для другого туннеля: gist. github.com/maximiliano/b69906e513e5b6860327d821bc0578af Если это непонятно, вам нужно отредактировать файл конфигурации ngrok на своем компьютере и запустить его так: ngrok start --all - person Maximiliano Guerra; 22.06.2020
comment
@MaximilianoGuerra спасибо, что он работает нормально и идеально - person RAHUL VISHWAKARMA; 23.07.2020
comment
Не работает с бесплатной учетной записью ngrok, потому что для first и second назначены разные URL-адреса. - person Chupo_cro; 01.04.2021
comment
@MaximilianoGuerra - спасибо. У меня отлично работает! - person leosok; 08.06.2021

Что у меня сработало с ngrok с несколькими портами

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

Вместо того, чтобы уйти, мне пришлось собрать все вместе, используя nginx локально, вот так:

http {
    server {
        listen       7777;
        server_name  localhost;

        location / {
            proxy_pass http://127.0.0.1:5000;
        }

        location /api {
            proxy_pass http://127.0.0.1:8000;
        }
    }
}

Мне повезло, что сервер api снабдил все вызовы префиксом «api», чтобы я мог направлять вызовы api на определенный порт и при этом обслуживать другой трафик на другом веб-сервере, и вам может не повезти.

Затем я настроил общедоступный веб-сервер для маршрутизации всех вызовов api на один и тот же адрес ngrok и позволил ngnix разобраться с этим.

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

person King Friday    schedule 13.02.2019
comment
На самом деле это должен быть ответ, а не тот, что был выше. Я заплатил ngrok, потом решил, что они не могут этого сделать, и привел меня в эту ветку. Теперь мне нужно отменить свой счет и попросить возмещение. ржу не могу. - person Louie Miranda; 07.08.2020
comment
это должен быть ответ, спасибо за ваш вклад! Я заплатил 60 долларов в год ngrok, желающему иметь несколько процессов для более чем одного приложения, работающего на моем сервере, но затем возникли проблемы с этим, поэтому нет смысла платить такие количество денег, я думаю, я бы продолжал использовать бесплатный план, возврат денег !! - person Oswaldo Zapata; 18.12.2020
comment
Разные порты работают хорошо, но проблема заключается в том, что один и тот же URL-адрес должен использоваться с разными портами (например, ESP32 CAM CameraWebServer обслуживает неподвижные изображения на порту 80, а видеопоток - на порт 81). - person Chupo_cro; 01.04.2021
comment
@OswaldoZapata Мусор для одного - сокровище для другого ... Спасибо, что поделились! Сэкономил немного денег, ну, конечно, моя - person andreyrk; 08.07.2021

Я использовал процесс ngrok (в зарезервированном домене), указывая на порт 80 локально.

ngrok http 80

Локально у меня nginx работает со следующей конфигурацией. Единственное, что для меня имеет значение, - это 2 местоположения / admin и / api, поскольку это то, для чего я ранее использовал несколько процессов ngrok. nginx позволяет использовать один и тот же туннель для разных мест.

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    server_name _;

    location /admin {
        proxy_pass http://127.0.0.1:3005;
    }

    location /api {
        proxy_pass http://127.0.0.1:5001;
    }
}
person Josh Osborne    schedule 28.07.2020

Перейти в это место:

  • OS X: /Users/example/.ngrok2/ngrok.yml
  • Linux: /home/example/.ngrok2/ngrok.yml
  • Windows: C: \ Users \ example.ngrok2 \ ngrok.yml

затем откройте файл yml в блокноте, вставьте код ниже и сохраните.

authtoken: your_token
tunnels:
  first:
    addr: 3002
    proto: http    
  second:
    addr: 8080
    proto: http

теперь перейдите в свое местоположение ngrok и запустите ngrok start --all

person spidy    schedule 09.07.2021