Ngrok konfiguriert mehrere Ports in derselben Domäne


71

Ist es möglich, mehrere Ports in ngrok in derselben Domäne zu öffnen ?

Etwas wie:

Fowarding http://example.ngrok.com:50001 -> 127.0.0.1:50001

Fowarding http://example.ngrok.com:50002 -> 127.0.0.1:50002

Ich arbeite in Windows und es wird nützlich sein, um mit zu debuggen IIS Express


Sie können 2 ngrok-Clients gleichzeitig ausführen, um dies zu erreichen.
stringo0

Ich benötige die Portnummer in der ngrok-URL zu Testzwecken. Das Ausführen mehrerer ngrok-Clients hilft in diesem Anwendungsfall nicht.
Per Quested Aronsson

Antworten:


61

Ja, es ist möglich, mehrere Tunnel gleichzeitig zu verwenden hostname!

Alles, was Sie tun müssen, ist, sie in Ihrer Konfigurationsdatei wie folgt zu deklarieren:

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        

Und führen Sie sie mit:

ngrok start --all

Schauen Sie auf die Dokumentation für Optionen, wie hostname, subdomain, authtokenund host_header. Hoffe das hilft dir!

PS For Free Plan entfernen Sie benutzerdefinierte Host- und Header-Teil wie folgt, es wird verschiedene Domänen FYI sein.

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

ANMERKUNGEN:


7
Funktioniert dies so, wie es OP tatsächlich benötigt? Ist dies nicht ein Hostname für die erste App und ein anderer Hostname für die zweite App?
user2152081

11
Ab ngrok 2.2.8 funktioniert dies nicht mehr. Es schlägt mit folgendem Fehler fehl: Tunnel session failed: The tunnel 'http://example.ngrok.com' is already bound to another tunnel session ERR_NGROK_334 ... für reservierte Hostnamen.
cap10morgan

1
Es heißt, ich muss ein Upgrade durchführen :( 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_314Ich musste den benutzerdefinierten Hostnamen entfernen
shareef

13
Nachdem ich einen halben Tag damit verbracht hatte, dies zu verfolgen und mich sogar für ein "Pro" -Konto anzumelden, habe ich festgestellt, dass dies nicht ngrokunterstützt wird. Der gesamte Webverkehr über die generierten Subdomains auf der TLD von ngrok.io überwacht nur den Port :80. Um einen anderen, nicht standardmäßigen HTTP-Port abzuhören, müssen Sie die "reservierten" TLS-Domänen verwenden. Diesen wird jedoch zufällig ein Port zugewiesen, wenn sie registriert werden, und sie überwachen nicht dieselbe Domäne wie der HTTP-Tunnel. Am Ende ist diese Antwort nicht eine gültige Lösung der Frage des OP geben. Down-Voting 2 bedeutet, dass 2 andere nicht 2 ihre Zeit damit verschwenden, dies zu
verfolgen

2
@ MaximilianoGuerra danke, es funktioniert gut und perfekt
RAHUL VISHWAKARMA

14

Was hat bei mir mit ngrok mit mehreren Ports funktioniert?

Ich hatte also das Problem, dass ich dieselbe Domain- Ursprungsrichtlinie für verschiedene Ports benötigte, aber ich wurde in meinen Tracks angehalten, weil ngrok dies letztendlich nicht unterstützt. Sie unterstützen eine benutzerdefinierte Subdomain oder benutzerdefinierte Domäne, jedoch nicht an verschiedenen Ports, da alle über Port 80 erfolgen müssen .

Anstatt aufzuhören , musste ich Dinge mit nginx lokal wie folgt zusammen hacken :

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;
        }
    }
}

Ich hatte das Glück, dass der API-Server allen Anrufen "api" vorangestellt hat, sodass ich die API-Anrufe an einen bestimmten Port weiterleiten und trotzdem den anderen Datenverkehr auf einem anderen Webserver bedienen konnte, und Sie haben möglicherweise nicht so viel Glück.

Ich habe dann den öffentlichen Webserver so konfiguriert, dass alle API-Aufrufe an dieselbe ngrok-Adresse weitergeleitet werden und ngnix sie aussortieren kann.

Ich hoffe, dies kann Ihnen helfen, eine Kombination von Lösungen zu finden, um dorthin zu gelangen, da das Denken nur auf eine Weise Sie so festhalten kann, wie ich es war.


3
Dies sollte eigentlich die Antwort sein und nicht die obige. Ich habe ngrok bezahlt und dann gedacht, sie können es nicht und führen mich zu diesem Thread. Jetzt muss ich meine Abrechnung stornieren und eine Rückerstattung beantragen. lol.
Louie Miranda

1
Dies sollte die Antwort sein, danke für Ihren Beitrag! Ich habe 60 $ / Jahr an ngrok gezahlt, weil ich mehrere Prozesse für mehr als eine App auf meinem Server ausführen möchte, aber dann Probleme damit habe. Es ist nicht sinnvoll, solche zu bezahlen Geldbetrag Ich denke, ich würde weiterhin den kostenlosen Plan nutzen, Rückerstattung !!
Oswaldo Zapata

2

Ich habe einen ngrok-Prozess (in einer reservierten Domäne) verwendet, der lokal auf Port 80 verweist.

ngrok http 80

Vor Ort habe ich Nginx mit der folgenden Konfiguration. Das einzige, was mir wichtig ist, sind die beiden Speicherorte / admin und / api, für die ich zuvor mehrere ngrok-Prozesse verwendet habe. Mit nginx können Sie denselben Tunnel für separate Standorte verwenden.

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;
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.