Ich habe eine Amazon EC2-Mikroinstanz mit Windows 2008-Server und dort eine Beispielwebanwendung bereitgestellt, die Java verwendet und auf einem Tomcat 7-Server bereitgestellt wird. Ich kann lokal auf eine Instanz zugreifen, aber wenn ich versucht habe, außerhalb der AWS-Instanz darauf zuzugreifen, z. B. von meinem Heimcomputer aus mit AWS Public DNS / Public IP-Adresse / Elastic IP-Adresse der Instanz, wird mir "Webseite ist" angezeigt Nicht verfügbar".
Ich habe in diesem Forum so viele ähnliche Fragen durchlaufen und ich glaube, ich habe alle Einstellungen vorgenommen, die sie verlangen, aber immer noch keinen Erfolg.
Folgendes habe ich getan / bestätigt.
1. localhost funktioniert, daher lauscht die Anwendung auf Port 80.
2. Eingehende Regel für HTTP an Port 80 für alle Mitglieder der Sicherheitsgruppe hinzugefügt, die meine Instanz verwendet.
3. Überprüfen Sie die Firewall-Einstellung auf der Windows-Instanz und stellen Sie sicher, dass Port 80 nicht blockiert ist.
4. versuchte es auch mit ausgeschalteter Firewall, aber kein Erfolg.
Ich würde mich sehr freuen, wenn mir jemand dabei helfen kann.
Danke, NS
quelle
Antworten:
Ich hatte ein ähnliches frustrierendes Problem, als ich JetBrains YouTrack auf einer Windows Server 2012 ec2-Instanz installierte. Was für mich funktionierte, war das Öffnen der Windows-Firewall-Ports, die Java speziell verwendete, und das Deaktivieren des World Wide Publishing-Service-Ports. Ich musste auch den YouTrack-Dienst unter dem LocalSystem-Konto anstelle des Standardkontos ausführen.
Versuche dies:
Deaktivieren Sie die Standardwebsite in IIS, wenn sie verwendet wird
Führen Sie ein netstat -a -b aus , um die Ports zu ermitteln, an die die java.exe binden wollte, z.
TCP 0.0.0.0:80 WIN-9NFIG6IEPT6: 0 LISTENING [java.exe]
TCP 127.0.0.1:49306 WIN-9NFIG6IEPT6: 49307 ESTABLISHED [java.exe]
Öffnen Sie den Service Control Manager, klicken Sie mit der rechten Maustaste auf Ihren Service und öffnen Sie den Eigenschaftendialog. Wählen Sie auf der Registerkarte Anmelden als Lokales Systemkonto als Konto aus, unter dem der Dienst ausgeführt wird. Es ist wichtig, dass dieser Benutzer Administrator ist
Erstellen Sie eine neue Regel für Tomcat mit TCP-Port 80 und jedem anderen Port, den es möglicherweise benötigt.
Speichern Sie die Regel und testen Sie Ihre URL von außerhalb des Servers.
quelle
Sie sollten die Firewall-Einstellung nicht vollständig deaktivieren. Dies würde die Sicherheit Ihrer App gefährden. Ändern Sie stattdessen die eingehenden Firewall-Regeln des Windows-Servers, um eingehenden Datenverkehr an bestimmten Ports zuzulassen.
Ich hatte ein ähnliches Problem, bei dem ich eine App auf Tomcat 8 auf einem Windows 2012-Server bereitgestellt hatte, der über AWS EC2 bereitgestellt wurde. Ich konnte auf die bereitgestellte App unter http: // localhost: 8080 innerhalb der VM zugreifen, jedoch nicht über das öffentliche Internet, nachdem ich die Zeichenfolge localhost in der URL durch die öffentliche IP-Adresse der VM ersetzt hatte.
Es hat einwandfrei funktioniert, nachdem ich die Firewall-Regeln geändert habe, um eingehenden Datenverkehr auf Port 80 (für http), Port 443 (für https) und Port 8080 (dies ist der Port, an dem meine Webanwendung standardmäßig auf dem Tomcat-Server bereitgestellt wurde) zuzulassen.
Ich habe die Firewall- und Sicherheitsgruppenkonfigurationen unter dem folgenden Link dokumentiert:
http://abhirampal.com/2015/08/04/firewall-config-for-java-web-app-hosted-on-aws-ec2-windows-2012-server/
quelle
Sie haben den Webserver wahrscheinlich falsch konfiguriert. Sie können dies testen, indem Sie eine Verbindung zum Server herstellen über:
Wenn Sie keine Fehlermeldung erhalten, können Sie eine Verbindung herstellen. In diesem Fall haben Sie den Webserver nicht richtig eingerichtet.
quelle
Möglicherweise muss eine Regel für den eingehenden TCP-Port 80 in die AWS-Sicherheitsgruppe für Ihre Instanz eingegeben werden.
quelle
Möglicherweise müssen Sie den Port verfügbar machen, um öffentliche Anrufe von der AWS-Konsole abzuhören.
quelle
Bitte folgen Sie diesem Link http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-network-security.html , Abschnitt Sicherheitsgruppen
Erstellen Sie eine Sicherheitsgruppe für Ihre EC2-Instanz, um Verbindungen an den gewünschten Ports zuzulassen.
quelle
Zwei Dinge für mich:
Änderung der Sicherheitsgruppe, die an meine RDS-Instanz angehängt ist, um Datenverkehr ein- und auszulassen
Festlegen eingehender und ausgehender Regeln im RDS für den Anwendungsport
Detaillierte Schritte:
Klicken Sie in der oberen Leiste Ihrer AWS-Konsole auf Dienste und wählen Sie EC2 aus
Klicken Sie im linken Menü des nächsten Fensters unter Instanzen auf Instanzen, um Ihre Instanzen anzuzeigen
Scrollen Sie in der Tabelle, die die Instanz enthält, auf die Sie von der Öffentlichkeit aus zugreifen möchten, nach rechts zu einer Spalte mit dem Namen Sicherheitsgruppen. Klicken Sie auf diese Sicherheitsgruppe.
Klicken Sie auf Speichern
Melden Sie sich jetzt bei Ihrem AWS RDS an, um eingehende und ausgehende Regeln über die Brandmauer festzulegen
Starten Sie das Bedienfeld. Klicken Sie auf System und Sicherheit (möglicherweise die erste) und dann auf Windows Fire-Wand. Klicken Sie dann auf Erweiterte Einstellungen
Klicken Sie links auf das Menü Eingehende Regeln.
Klicken Sie auf der Registerkarte Aktionen (rechts) auf Neue Regel
Wählen Sie Port und klicken Sie auf Weiter
Wählen Sie TCP (falls nicht ausgewählt) und unten Spezifische lokale Ports auswählen.
Geben Sie in das Feld die Portnummer Ihrer Anwendung ein und klicken Sie auf Weiter
Wählen Sie Verbindung zulassen und klicken Sie auf Weiter.
Geben Sie den Regelnamen an. So etwas wie der Name Ihrer App aus Gründen der Lesbarkeit und klicken Sie auf Fertig stellen
Dann konfigurieren wir den laufenden Verkehr
quelle
Bitte beziehen Sie sich auf den Link. Es wäre genauer.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html
Sie können die Kommunikation zwischen allen dieser Sicherheitsgruppe zugeordneten Instanzen oder zwischen Instanzen, die einer anderen Sicherheitsgruppe zugeordnet sind, und Instanzen, die dieser Sicherheitsgruppe zugeordnet sind, zulassen. Klicken Sie auf Regel hinzufügen, wählen Sie Alle ICMP aus und geben Sie die ID der Sicherheitsgruppe in Quelle ein. Dadurch erhalten Sie eine Liste der Sicherheitsgruppen. Wählen Sie die Sicherheitsgruppe aus der Liste aus. Wiederholen Sie die Schritte für die TCP- und UDP-Protokolle. Klicken Sie auf Speichern, wenn Sie fertig sind.
quelle
Es ist hauptsächlich das Problem mit der Windows-Firewall. Ich habe die gleichen Schritte wie Sie versucht, es war nicht erfolgreich. In dem Moment, als ich die Firewall ausschaltete, war alles in Ordnung. Ich denke, die Sicherheit sollte nicht beeinträchtigt werden, da wir Regeln für eingehende ausgehende Nachrichten konfigurieren.
quelle
Für WINDOWS-Instanz - Klicken Sie mit der rechten Maustaste auf den Namen der EC-2-Instanz, navigieren Sie zu der PEM-Datei, die während der Instanzerstellung erstellt wurde, und klicken Sie auf Kennwort entschlüsseln. Sie erhalten den Benutzernamen und das Kennwort für die Verbindung über Start -> Ausführen -> mstsc -> Windows IP mit Windows-Authentifizierung als Administrator und dessen Kennwort
Für die LINUX-Instanz -> puttygen herunterladen und auf die Schaltfläche LOAD klicken, um die PEM-Datei auszuwählen, und dann auf die Schaltfläche GENERATE klicken, um eine ppk-Datei zu generieren. Geben Sie über Putty die IP ein und wählen Sie unter Verbindungen -> SSH -> AUTH -> Durchsuchen die PPK-Datei aus und speichern Sie die Putty-Sitzungen.
quelle