Konfigurieren von direkte http-Zugriff auf die EC2-instance?
Dies ist eine sehr grundlegende Amazon EC2-Frage, aber ich bin ratlos, so hier geht.
Will ich starten Sie eine Amazon EC2-instance und den Zugriff auf HTTP-ports 80 und 8888
von überall aus. So weit ich kann nicht einmal erlauben, die Instanz zu verbinden, um auf diese ports verwenden
seine eigene IP-Adresse (aber es wird eine Verbindung zu localhost).
Konfigurierte ich die "default" - Sicherheitsgruppe für HTTP mit dem standard-HTTP-option auf der management-Konsole (und auch SSH).
Startete ich meine Instanz in der standardmäßigen Sicherheitsgruppe.
Ich mit der Instanz verbunden, auf der SSH-port 22 zweimal und in einem Fenster starten eines HTTP-Servers
auf port 80. In dem anderen Fenster, ich bestätige, dass ich eine Verbindung herstellen kann HTTP mit dem "localhost".
Aber wenn ich versuche, Zugriff auf HTTP aus der Instanz (oder auch anderswo) mit dem öffentlichen DNS oder die Private IP-Adresse, die ich het "connection refused".
Was mache ich falsch, bitte?
Unten ist eine Konsole-fragment zeigt die wget, gelingt, und die beiden, die nicht laufen von der Instanz selbst.
--2012-03-07 15:43:31-- http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: /__whiff_directory_listing__ [following]
--2012-03-07 15:43:31-- http://localhost/__whiff_directory_listing__
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: “__whiff_directory_listing__”
[ <=>
] 7,512 --.-K/s in 0.03s
2012-03-07 15:43:31 (263 KB/s) - “__whiff_directory_listing__” saved [7512]
[ec2-user@ip-10-195-205-30 tmp]$ wget http://ec2-50-17-2-174.compute-1.amazonaws.com/
--2012-03-07 15:44:17-- http://ec2-50-17-2-174.compute-1.amazonaws.com/
Resolving ec2-50-17-2-174.compute-1.amazonaws.com... 10.195.205.30
Connecting to ec2-50-17-2-174.compute-1.amazonaws.com|10.195.205.30|:80... failed:
Connection refused.
[ec2-user@ip-10-195-205-30 tmp]$ wget http://10.195.205.30/
--2012-03-07 15:46:08-- http://10.195.205.30/
Connecting to 10.195.205.30:80... failed: Connection refused.
[ec2-user@ip-10-195-205-30 tmp]$
InformationsquelleAutor Aaron Watters | 2012-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den standard-tcp-sockets-Schnittstelle erfordert, dass Sie binden an eine bestimmte IP-Adresse beim senden oder hören. Es gibt ein paar etwas spezielle Adressen: localhost (die kennen Sie wahrscheinlich), die ist 127.0.0.1. Es gibt auch eine spezielle Adresse 0.0.0.0 oder INADDR_ANY (internet-Protokoll, spezielle Kurzschrift für JEDE ADRESSE). Es ist eine Art zu hören, die auf eine oder mehrere allgemein, ALLE Adressen auf dem host. Dies ist ein Weg, zu sagen, dass der kernel/Stapel, Sie sind nicht daran interessiert, eine bestimmte IP-Adresse.
Also, wenn Sie einen server einzurichten, der hört auf "localhost" sagen Sie dem service, die Sie wollen, verwenden Sie die spezielle reservierte Adresse, die nur erreicht werden kann durch den Benutzer von diesem host, und während es existiert auf jedem host, eine Verbindung zu localhost wird immer nur erreichen, den host, den Sie machen die Anfrage.
Wenn Sie möchten, ein service zu sein, überall erreichbar (auf einem lokalen host, auf alle Schnittstellen, etc.) Sie können angeben 0.0.0.0.
InformationsquelleAutor Peter N
(0) Es ist albern, aber das erste, was Sie tun müssen, ist, um sicherzustellen, dass Ihre web-server ausgeführt wird.
(1) müssen Sie Bearbeiten Ihre Sicherheitsgruppe zu lassen, eingehende HTTP-Pakete auf Ihrer website. Wenn Ihre website ist das hören auf port 80, die Sie Bearbeiten müssen, müssen Sie der Sicherheitsgruppe öffnen Sie den Zugang zu port 80, wie oben erwähnt. Wenn Ihre website ist "Zuhören" auf einem anderen port, dann müssen Sie Bearbeiten Sie die Sicherheitsgruppe für den Zugriff auf diese anderen port.
(2) Wenn Sie mit einem Linux-Instanz, die iptables - firewall standardmäßig ausgeführt. Sie können überprüfen, ob die firewall aktiv ist, durch ausführen
sudo service iptables status
in der Befehlszeile. Wenn Sie die Ausgabe, dann die iptables-firewall ausgeführt wird. Wenn Sie die Meldung erhalten " - Firewall nicht ausgeführt wird", das ist ziemlich selbsterklärend. Im Allgemeinen, die iptables firewall ausgeführt wird, standardmäßig aktiviert.
Haben Sie zwei Möglichkeiten: knock-out die firewall oder Bearbeiten Sie die firewall-Konfiguration zu lassen, HTTP-Verkehr durch. Ich entschied mich zu klopfen, die firewall als die einfachere option (für mich).
sudo service iptables stop
Gibt es kein echtes Risiko, Herunterfahren iptables weil iptables, wenn aktiv, lediglich dupliziert die Funktionalität von Amazon, die firewall, die die Sicherheit der Gruppe zu erzeugen der Konfigurationsdatei. Wir gehen davon aus, dass hier Amazon AWS nicht misconfigure seine firewalls - eine sehr sichere Annahme.
(3) Nun können Sie auf die URL aus Ihrem browser.
(4) Die Microsoft Windows-Servern laufen auch Ihre persönliche firewalls standardmäßig, und Sie müssen Sie zu beheben, die Windows Server persönlichen firewall.
Korrektur: durch AWS-Standard-AWS nicht feuern server-firewalls wie iptables (Centos) oder UAF (Ubuntu), wenn Sie die Bestellung sind die Schaffung neuer EC2 Instanzen - das ist, warum EC2-instances im selben VPC können Sie ssh in einander, und Sie "sehen" kann der web-server, der Sie befeuert von einem anderen EC2-instance in derselben VPC.
Nur stellen Sie sicher, dass Ihre RESTful-API hört auf allen Schnittstellen auf, d.h. 0.0.0.0:portID
InformationsquelleAutor Vietnhi Phuvan
Wie Sie immer connection refused (Pakete werden verworfen) ich Wette, es ist iptables das problem verursacht. Versuchen zu laufen,
und testen Sie die Verbindung.
Werden Sie auch brauchen, um hinzuzufügen, diese Regeln permanent was können Sie tun, indem die oben genannten Zeilen in ie. /etc/sysconfig/iptables, wenn Sie mit Red Hat.
InformationsquelleAutor kazimir
Anscheinend ich war "die Bindung an localhost" in der Erwägung, dass musste ich bind to 0.0.0.0 zu reagieren, um den port 80 für die alle eingehenden TCP-Schnittstellen (?). Dies ist eine Feinheit der TCP/IP -, dass ich nicht vollständig verstehen, noch nicht, aber das problem behoben.
InformationsquelleAutor Aaron Watters
Hatte, Folgendes zu tun:
1) Aktivieren Sie den HTTP-Zugriff auf die Instanz config, es war nicht auf standardmäßig nur SSH
2) habe Versucht zu tun, nodejs server, also port gebunden wurde, zu 80 -> 3000 haben Sie die folgenden Befehle, um das zu beheben
InformationsquelleAutor TOBlender
Amazon support antwortete es und es funktionierte sofort:
Was wir empfehlen, ist die Verwendung eines port-Umleitung via iptables :-
Ich hoffe, dass die oben genannten Informationen hilft.
InformationsquelleAutor Priya Ranjan Kumar