So richten Sie die Portweiterleitung auf Amazon EC2 ein

15

Ich habe eine Webanwendung, die auf Amazon EC2 ausgeführt wird. Es lauscht auf Port 9898.

Ich kann darauf zugreifen, indem ich die IP-Adresse und die Portnummer eingebe.

zB 1.2.3.4:9898

Was ich jedoch wirklich gerne tun würde, ist, die Portnummer nicht eingeben zu müssen.

Nachforschungen haben ergeben, dass die Portweiterleitung möglicherweise die Lösung ist - dh, Sie leiten über den Standardport (80) empfangene http-Anforderungen an meinen nicht standardmäßigen Port (9898) weiter.

Ist das der richtige Weg? Wenn ja, wie richte ich das auf EC2 ein?

Wenn nicht, wie erreiche ich, was ich will?

Vielen Dank im Voraus für jede Hilfe.

Aktualisieren

Ich hätte erwähnen sollen, dass die EC2-Instanz eine Windows Server 2012-AMI ist.

ksl
quelle
Sie müssten etwas wie HAProxy vor Ihrem Server haben, um Anforderungen weiterzuleiten. Oder verwenden Sie iptables. Amazon unterstützt keine Portweiterleitung.
Nathan C

Antworten:

10

Der einfachste Weg, dies zu tun, ohne selbst etwas zu installieren, besteht darin, einen Amazon Elastic Load Balancer vor die Instanz zu stellen. Mit diesen können Sie Ports so weiterleiten, wie Sie es beabsichtigen.

ceejayoz
quelle
Ich habe Ihren Vorschlag ausprobiert, aber ich kann den Ping-Check nicht zum Laufen bringen.
ksl
ceejayoz ist richtig ELB ist der Weg, um es zu tun. Verwenden Sie die TCP-Prüfung, wenn HTTP nicht funktioniert. Leider nicht genug Ruf, um einen Kommentar abzugeben.
Pestouille
Hallo, bitte können Sie näher darauf eingehen.
ksl
Versuchen Sie, ICMP für die Windows Server-Firewall von den ELB-Adressen aus zuzulassen
Tom O'Connor,
Die Firewall ist standardmäßig so konfiguriert, dass der gesamte ICMP V4-Datenverkehr zugelassen wird.
ksl
6

Sie haben zwei Möglichkeiten.

1) Richten Sie einen Reverse-Proxy ein, um die HTTP-Anforderungen (sofern es sich um HTTP handelt) an einen anderen Port weiterzuleiten.

Es sollte so einfach sein wie: Installieren Sie Apache, aktivieren Sie das proxy_http-Modul und schreiben Sie etwas wie:

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
ProxyPass / http://localhost:9898/
ProxyPassReverse / http://localhost:9898/

2) Richten Sie IP-Tabellen ein, um die Pakete weiterzuleiten .

Tom O'Connor
quelle
Ich hätte sagen sollen, dass es sich bei der EC2-Instanz um eine Windows Server 2012-AMI handelt. Ich habe nicht herausgefunden, was das Windows-Äquivalent von IP Tables ist.
ksl
Danke für die Antwort. Ich habe versucht, Netsh wie von Ihnen vorgeschlagen zu verwenden, aber ich kann es nicht zum Laufen bringen. Ich leite http-Anfragen auf Port 80 sowohl an die öffentlichen als auch an die privaten IP-Adressen meiner EC2-Instanz weiter.
ksl
-3

da ich den kommentar zur verwendung von iptables gesehen habe, werde ich meine erfahrungen mit ec2 linux teilen. Ich habe einen ausgezeichneten Artikel zum Weiterleiten von Ports für Node.js gefunden. Wenn Sie zu den Anweisungen zum Bearbeiten von sysctl.conf springen, werden die Anweisungen zum Weiterleiten angezeigt. Mein Linux-Verfahren unterschied sich leicht von Ubuntu. Artikel ist: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

Die Arbeit erfolgt über ssh. Das einzige Problem, auf das ich gestoßen bin, war, dass ich zweimal vorab geroutet habe, ohne iptables dazwischen zu löschen, und meine Web-App war nicht sichtbar, bis ich gespült und neu geladen habe. Ich weiß, dass das ein schreckliches Bild ist, sorry.

Brian
quelle