如何从外部localhost提供AWS EC2上的Tomcat

时间:2011-07-28 17:24:49

标签: tomcat amazon-web-services amazon-ec2

我正在尝试在AWS Linux服务器上运行Tomcat。我已经安装了Tomcat,并从命令行对其进行了测试,以确保它正常工作,但我无法从另一台机器上访问它。细节:

  1. 实例在安全组中打开了HTTP的端口80传入。
  2. 我已经通过远程登录到该端口上的localhost并执行GET请求来验证它是否在端口80上运行。
  3. 我尝试将公共DNS添加为server.xml中localhost的别名,然后重新启动以确保更改已被接收。
  4. 然而,如果我尝试使用公共DNS通过我的浏览器(在实际服务器之外)访问它,我会“无法连接”。

    有什么想法吗?

    ...谢谢

4 个答案:

答案 0 :(得分:6)

好的,问题是我还需要编辑并重新启动iptables,如下所述:http://cyberciti.biz/faq/howto-rhel-linux-open-port-using-iptables

答案 1 :(得分:2)

添加上述答案中未提及的内容。

对我来说,遗漏了TCP over 8080。 因此,我创建了新的入站规则,其中包含以下详细信息:

  • 类型:自定义TCP规则
  • 协议:TCP
  • 港口范围:8080
  • 资料来源:任何地方

这对我有用。 希望它可以帮助某人。 :)

答案 2 :(得分:0)

你打开80端口了吗?

创建实例时,为其选择一个安全组。

转到左侧的安全组,clic到您的实例组和下方,在入站标签中,您设置:

  • 创建新规则:HTTP
  • 资料来源:0.0.0.0/0

clic添加规则和clic以应用规则更改。

多数民众赞成

答案 3 :(得分:0)

我已经尝试了帖子中提到的所有内容,正如我发现的那样,我的tomcat使用的是IPv6而不是IPv4,我也修改了 编辑/etc/sysctl.conf并进行以下配置更改:

net.ipv6.conf.all.disable_ipv6 = 1 
net.ipv6.conf.default.disable_ipv6 = 1 
net.ipv6.conf.lo.disable_ipv6 = 1 

保存后,我运行“sudo sysctl -p”命令重新加载sysctl。重启tomcat后,它将IPv6更改为IPv4。

验证

(前)     $ sudo lsof -i:8080 -n

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    4224 tomcat   46u  IPv6  15733      0t0  TCP *:webcache (LISTEN)

(之后)$ sudo lsof -i:8080 -n

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    4414 tomcat   46u  IPv4  16364      0t0  TCP *:webcache (LISTEN)

我希望这可以帮助面临类似问题的人!