无法通过公共IP访问EC2实例上的站点


10

我有带window 2008服务器的Amazon EC2微型实例,并在该服务器上部署了一个示例Web应用程序,该应用程序使用Java并部署在tomcat 7服务器上。我可以在实例上本地访问它,但是当我尝试在AWS实例外部访问它时,可以说是使用实例的AWS公共DNS /公共IP地址/弹性IP地址从我的家用计算机访问它,它给我“无法使用”。

我在这个论坛上经历了很多类似的问题,我想我已经完成了他们要求做的所有设置,但仍然没有成功。

这是我已经完成/确认的事情。

1. localhost有效,因此应用程序在端口80上侦听。

2.为实例正在使用的安全组下的每个用户添加了端口80上HTTP的入站规则。

3.检查Windows实例上的防火墙设置,确保未阻止端口80。

4.即使关闭防火墙也尝试过,但没有成功。

如果有人可以帮助我,我将不胜感激。

谢谢,NS


1
telnet和traceroute告诉您什么?
Pratap 2014年

Answers:


5

在Windows Server 2012 ec2实例上安装JetBrains YouTrack时,我遇到了类似的令人沮丧的问题。对我有用的是打开java 专门使用的Windows防火墙端口,并禁用World Wide Publishing服务端口。我还必须在LocalSystem帐户下而不是默认帐户下运行YouTrack服务。

尝试这个:

  • 如果正在使用IIS,请关闭默认网站

  • 运行netstat -a -b以发现java.exe试图绑定到的端口,例如:

    TCP 0.0.0.0:80 WIN-9NFIG6IEPT6:0侦听[java.exe]

    已建立TCP 127.0.0.1:49306 WIN-9NFIG6IEPT6:49307 [java.exe]

  • 打开服务控制管理器,然后右键单击您的服务,然后打开属性对话框。在“登录身份” 选项卡上,选择“ 本地系统帐户”作为运行该服务的帐户。此用户必须是管理员,这一点很重要

  • 我强烈建议重新打开防火墙。
  • 打开防火墙的入站规则选项卡,并禁用万维网服务(HTTP-In)规则
  • 使用TCP端口80及其可能需要的任何其他端口为Tomcat创建新规则。

  • 保存规则并从服务器外部测试URL。


4

您不应该完全关闭防火墙设置。这会损害您应用程序的安全性。而是修改Windows Server入站防火墙规则,以允许特定端口上的传入流量。

我有一个类似的问题,我在通过AWS EC2设置的Windows 2012服务器上的Tomcat 8上部署了一个应用程序。将URL中的字符串localhost替换为VM的公共IP地址后,可以从VM内访问http:// localhost:8080上已部署的应用程序,而不能从公共Internet访问。

在我更改防火墙规则以允许端口80(对​​于http),端口443(对于https)和端口8080(这是默认情况下,在tomcat服务器上将Web应用程序部署到的端口)上的传入流量时,它工作正常。

我在下面的链接中记录了防火墙和安全组的配置:

http://abhirampal.com/2015/08/04/firewall-config-for-java-web-app-hosted-on-aws-ec2-windows-2012-server/


1
太棒了,您保存了我的一天<3
Thamaraiselvam '18

1

您可能未正确配置Web服务器。您可以通过以下方式连接到服务器来进行测试:

telnet $IP 80

如果没有出现错误,则可以连接。在这种情况下,您没有正确设置Web服务器。


没错,我无法通过telnet从本地计算机连接到AWS实例。您能帮我解决该问题吗?我尝试在aws实例上查找IIS,并且它正在运行。
user242725

谢谢。它在实例上关闭域,私​​有和公共防火墙后才起作用。但不确定,如何保护实例并同时在实例之外访问我的Web应用程序。
user242725 2014年

1

您的实例的AWS安全组中可能需要输入入站TCP端口80的规则。


1

您可能需要使端口可用以侦听来自AWS控制台的任何公共呼叫。


AWS控制台具有许多功能,也许您可​​能会更具体。
kmarsh 2015年


1

对我来说有两件事:

  1. 修改附加到我的RDS实例的安全组,以允许传入和传出流量

  2. 在RDS中为应用程序端口设置入站和出站规则

详细步骤:

  • 在AWS控制台的顶部栏中,单击服务,然后选择EC2

  • 在下一个窗口的左侧菜单上,在“实例”下,单击“实例”以查看您的实例

  • 在包含要从公共访问的实例的表中,向右滚动到名为“安全组”的列。单击此安全组。

  • 在显示的表格中,滚动到包含安全组说明和其他选项卡(如“入站”,“出站”,“标签”)的底部
  • 单击入站选项卡。单击编辑。默认情况下,有一个规则(RDP)。
  • 让我们再添加两个
  • 单击添加规则按钮。
  • 选择“所有流量”作为类型,选择“所有协议”
  • 保留端口范围(0-65535),选择source作为Custom。
  • 所有这些都适用于两个规则2)对于第一个规则,在源后面出现的文本框中,输入0.0.0.0/0 3)对于第二个规则,输入::: 0 4)
  • 点击保存

    现在登录到您的AWS RDS以通过防火墙设置入站和出站规则

  • 启动控制面板。单击系统和安全性(可能是第一个),然后单击Windows Fire wall。然后点击高级设置

  • 单击左侧的入站规则菜单。

  • 在“操作”选项卡(在右侧)中,单击“新建规则”

  • 选择端口,然后单击下一步

  • 选择“ TCP”(如果未选中),然后在“选择特定的本地端口”下面。

  • 在字段中,输入您的应用程序的端口号,然后单击下一步

  • 选择允许连接,然后单击下一步。

  • 指定规则名称。出于可读性目的,例如您的应用名称,然后单击完成

然后让我们配置出站流量

  • 在与“入站规则”相同的菜单上,选择“出站规则”,然后按照与入站规则相同的步骤进行操作
  • 完成这些设置后,您必须能够从外部访问您的应用程序

0

请参考链接。它将更加具体。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

您可以允许与此安全组关联的所有实例之间,或与另一个安全组关联的实例与与此安全组关联的实例之间的通信。单击“添加规则”,选择“所有ICMP”,然后开始在“源”中键入安全组的ID。这为您提供了一个安全组列表。从列表中选择安全组。对TCP和UDP协议重复上述步骤。完成后,单击“保存”。


0

Windows防火墙主要是问题所在。我尝试了与您相同的步骤,但操作不成功。我转过防火墙的那一刻就很好。我认为在配置入站出站规则时,安全性不应受到影响。


-1

对于WINDOWS实例-右键单击EC-2实例名称,浏览到在实例创建过程中创建的.pem文件,然后单击解密密码。您将获得用户名和密码以通过开始->运行-> mstsc->以Windows身份验证为管理员的Windows IP及其密码进行连接

对于LINUX实例->下载puttygen,然后单击“加载”按钮以选择.pem文件,然后单击“生成”按钮以生成一个ppk文件。通过腻子,输入IP,然后在Connections-> SSH-> AUTH-> Browse下选择.ppk文件并保存腻子会话。


如果问题是“如何使用SSH密钥登录”,这将是一个很好的答案。但是问题是“如何从浏览器访问网页”。
珍妮D
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.