Heroku + node.js: Ich habe einen Server, der mehrere Ports verwendet. Wie kann ich Heroku dazu bringen, sie zuzuteilen?

8

Umm ich werde versuchen, klarer zu werden ..

In einem Anwendungsserver, den ich in node.js geschrieben habe, habe ich einen inneren Proxy für mehrere Ports:

  • in meinem 8080 port Ich habe meine Rest api .
  • in meinem 3000 port Ich habe meinen Push-Server und chatte .

Ich benutze das npm-Paket Subdomain-Router für das interne Routing zum Port, wodurch Subdomains in das 'Front-End', welches Proxy zu diesen Ports zurückführt.
Code Demonstration: ( <some-app> ist offensichtlich nicht der wirkliche Name der App)

%Vor%

Die API funktioniert großartig, obwohl ich nicht über <some-app>.herokuapp.com:8080 , sondern nur über <some-app>.herokuapp.com darauf zugreifen kann und das innere subdomain-router -Modul magisch macht.
Außerdem kann ich nicht auf die Subdomains zugreifen. Beim Zugriff auf api.<some-app>.herokuapp.com erhalte ich No such app Fehlerseite von heroku.

TL; DR Der Zugriff auf <some-app>.herokuapp.com funktioniert (leitet zu /v1 path für meine API um), kann aber nicht auf <some-app>.herokuapp.com:8080 , <some-app>.herokuapp.com:3000 oder chat.<some-app>.herokuapp.com zugreifen.

Beim Zugriff auf meine API durch Angabe des Ports in der URL ( wie folgt: <some-app>.herokuapp.com:8080 ) erhalte ich den folgenden Fehler in meinem Browser (google chrome): ERR_CONNECTION_REFUSED .

Meine Vermutung sagt, dass es etwas mit öffnenden Ports in heroku zu tun hat, aber ich habe keine Ahnung, wie es geht (probierte googeln vonc). < br> Es erklärt jedoch nicht, warum ich nicht auf die Subdomains zugreifen kann.

Ich würde mich über jedes Licht freuen, das zu diesem Thema gehört.
Ich bin neu in Heroku und es wird wirklich frustrierend.

Danke!
Amit

    
Amit Evron 05.06.2016, 01:26
quelle

2 Antworten

10

Okay, nach einigen Recherchen habe ich herausgefunden, dass das Öffnen von Ports in Heroku deaktiviert und nicht erlaubt ist.

Die einzige Möglichkeit ist, Subdomains zu verwenden und dann in-app ein Proxy-Modul zu verwenden (wie subdomain-router , das ich verwende).

ABER - Mit Heroku können Sie keine Subdomains in ihrer Domain erstellen, was bedeutet, dass your-app.herokuapp.com fest ist und keine Subdomains haben kann.
In Heroku-Handbüchern verlangen sie von Ihnen, dass Sie Ihren eigenen Domain- und DNS-Provider haben, indem Sie in Ihrer Domain-Einstellungen einen A-Alias ​​(CNAME) in der DNS-Tabelle erstellen, der auf Ihre App-herokuapp-Domain verweist und dann verwendet Mit dem Befehl heroku domains:add fügen Sie Ihre Domain zur Liste der zulässigen Originale hinzu.

Sie können weitere hier lesen. Es bietet alle Informationen, die Sie brauchen.

Ich hoffe, es hat einigen geholfen.

    
Amit Evron 05.06.2016, 17:57
quelle
0

Ich habe heute auch davon erfahren. Ich habe gelernt, dass Sie, wenn Sie einen Dienst auf einem Hafen in Heroku betreiben, immer noch lokal darauf zugreifen können. Würde nicht für die Bedenken des obigen Benutzers funktionieren, aber es hat mein Problem behoben, das mich zu dieser Frage geführt hat.

    
Antoine 05.06.2016 19:49
quelle