Tomcat拒绝在端口8080上工作

时间:2013-04-11 11:19:54

标签: tomcat amazon-ec2

很抱歉,如果之前有人问过这个问题。

我有一个Amazon实例(Ubuntu Server 12.04.1 LTS)并安装了Tomcat版本(Apache Tomcat / 6.0.36)。它在端口80上按预期工作,但不在端口8080上工作。(不工作意味着"无法连接到Web应用程序管理器")。

  • 我的安全组配置为http *
  • 打开了端口8080
22 (SSH)    0.0.0.0/0   Delete
80 (HTTP)   0.0.0.0/0   Delete
8080 (HTTP*)    0.0.0.0/0   Delete
  • 我安装了jdk和jre,即使我不知道为什么我需要jdk 如果tomcat在端口8080上运行。
  • 我已经通过
  • 配置tomcat绑定到IPV4地址
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" address="0.0.0.0"/>

在server.xml 并添加

JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
echo $JAVA_OPTS

到setenv.sh

Runnung netstat -ln给了我

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     5886     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     7285     /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     SEQPACKET  LISTENING     6077     /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     7397     /var/run/acpid.socket

正在运行wget http://localhost:8080给我

--2013-04-11 11:20:40--  http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7446 (7.3K) [text/html]
Saving to: `index.html'

100%[=====================================================================================================================================================================>] 7,446       --.-K/s   in 0s      

2013-04-11 11:20:40 (294 MB/s) - `index.html' saved [7446/7446]

所以,我错过了什么吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

登录AWS控制台并导航至安全组。

  1. 删除HTTP(80)(如果有)。
  2. 选择自定义TCP规则并将端口输入为“8080”
  3. 点击“应用规则”。
  4. 添加DNS名称:8080

    现在应该可以了。

答案 1 :(得分:0)

请检查您的Amazon EC2 instace的安全设置或ELB的安全设置(如果您使用的话)。我最好的猜测是8080没有暴露

答案 2 :(得分:0)

......我正在努力解决这个问题。

我将您问题的一部分解释为您已正确配置并将安全组应用于您的服务器,该安全组允许在端口80上使用HTTP并访问端口8080。 (我正在使用的安全组管理器的版本与我所使用的版本略有不同。)

应用了打开端口80的规则后,我可以在端口80上获得内部和外部响应。

另一方面,我添加了一个规则来打开端口8080并且无法从中获得响应。 (在主机上,我的wget(1)测试工作与你的一样。我的服务器与lynx(1)的测试也有效。)

解决方案的一些提示似乎暗示HTTP应该与规则中的端口相关联,但EC2仪表板中的配置程序不允许应用程序协议与规则关联。

我所看到的只是端口,协议(本例中为TCP)和源地址范围。

我确定我的本地防火墙没有阻塞端口8080.所以我很难过......

--- v