我有一台装有 Windows 2008 服务器的 Amazon EC2 微型实例,并在其中部署了一个示例 Web 应用程序,该应用程序使用 Java 并部署在 Tomcat 7 服务器上。我能够在实例上本地访问它,但当我尝试在 AWS 实例之外访问它时(比如从我的家用计算机使用实例的 AWS 公共 DNS/公共 IP 地址/弹性 IP 地址),它显示“网页不可用”。
我已经在这个论坛上看到了许多类似的问题,我想我已经完成了他们要求的所有设置,但仍然没有成功。
这是我已完成/确认的事情。
1.localhost 工作正常,因此应用程序监听端口 80。
2.为我的实例正在使用的安全组下的每个人在端口 80 上添加了 HTTP 入站规则。
3.检查 Windows 实例上的防火墙设置,确保端口 80 没有被阻止。
4.甚至尝试关闭防火墙,但没有成功。
如果有人能帮助我,我将不胜感激。
谢谢,NS
答案1
当我在 Windows Server 2012 ec2 实例上安装 JetBrains YouTrack 时,我也遇到了类似的令人沮丧的问题。对我有用的方法是打开 Java 正在使用的 Windows 防火墙端口具体来说并禁用 World Wide Publishing 服务端口。我还必须在 LocalSystem 帐户下(而不是默认帐户下)运行 YouTrack 服务。
尝试这个:
如果正在使用 IIS,请关闭默认网站
运行网络状态监测发现 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) 规则
为 Tomcat 创建一条新规则,其中包含 TCP 端口 80 以及它可能需要的任何其他端口。
保存规则并从服务器外部测试您的 URL。
答案2
您不应该完全关闭防火墙设置。这会危及您应用程序的安全性。相反,请修改 Windows Server 入站防火墙规则以允许特定端口上的传入流量。
我遇到了类似的问题,我在通过 AWS EC2 配置的 Windows 2012 服务器上的 Tomcat 8 上部署了一个应用程序。我可以在http://本地主机:8080将 URL 中的字符串 localhost 替换为虚拟机的公共 IP 地址后,可以从虚拟机内部访问,但不能从公共互联网访问。
在我更改防火墙规则以允许端口 80(用于 http)、端口 443(用于 https)和端口 8080(这是我的 Web 应用程序在 tomcat 服务器上默认部署的端口)上的传入流量后,它工作正常。
我已在以下链接记录了防火墙和安全组配置:
答案3
对我来说有两件事:
修改附加到我的 RDS 实例的安全组以允许流量进出
在 RDS 中为应用程序端口设置入站和出站规则
详细步骤:
在 AWS 控制台顶部栏上,单击“服务”,选择“EC2”
在下一个窗口的左侧菜单中,在实例下,单击实例以查看实例
在包含您要从公共访问的实例的表中,向右滚动到名为“安全组”的列。单击此安全组。
- 在显示的表中,滚动到其底部,其中包含安全组的描述和其他选项卡,如入站、出站、标签
- 单击入站选项卡。单击编辑。默认情况下有一条规则(RDP)。
- 让我们再添加两个
- 单击添加规则按钮。
- 类型选择“所有流量”,协议选择“全部”
- 保留端口范围(0 - 65535),选择源为自定义。
- 所有这些都适用于两条规则 2)对于第一条规则,在源后出现的文本框中输入 0.0.0.0/0 3)对于第二条规则,输入 ::/0 4)
点击保存
现在登录到您的AWS RDS以通过防火墙设置入站和出站规则
启动控制面板。单击系统和安全(可能是第一个),然后单击 Windows 防火墙。然后单击高级设置
点击左侧的入站规则菜单。
在“操作”选项卡(右侧)中,单击“新建规则”
选择端口并点击下一步
选择 TCP(如果未选择),然后选择下面的特定本地端口。
在字段中输入应用程序的端口号,然后单击下一步
选择允许连接并单击下一步。
指定规则名称。为了便于阅读,可以使用类似于应用程序的名称的名称,然后单击“完成”
然后让我们配置出站流量
- 在与入站规则相同的菜单上,选择出站规则,然后按照入站规则中所述的相同步骤进行操作
- 完成这些设置后,你必须能够从外部访问你的应用程序
答案4
可能需要在您的实例的 AWS 安全组中输入入站 TCP 端口 80 的规则。