在Amazon AWS上运行Java应用程序

时间:2017-08-03 10:47:08

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

我制作了一个EC2 VPC RHEL实例并部署了一个运行嵌入式jetty Web服务器的java应用程序。为了便于理解,此Web应用程序正在提供基本的HTML请求。对于我的初始测试,我创建了一个允许所有传入和传出流量的安全组(All All 0.0.0.0/0,:: / 0)。

我原本希望从公共IP地址浏览网页,但不知怎的,它无法正常工作。我还验证了Jetty正在监听0.0.0.0。所以,码头似乎不是问题。我花了半天时间搞清楚但是它没有用,也无法找出原因。

然后我创建了一个非常基本的TCP服务器(https://systembash.com/a-simple-java-tcp-server-and-tcp-client/)并部署在同一个AWS ec2实例上,然后我尝试从客户端作为TCP客户端从我的系统发送请求,但它不起作用。

但是,我正在从WinSCP传输文件并仅使用此公共IP运行putty中的命令。这意味着公共IP不是问题。

我可以看到与putty,WinSCP和我的java客户端的唯一区别在于使用putty,我也提供私钥作为授权过程的一部分(在auth中)但是其中java或浏览器,我正在访问它直。

无法理解问题所在。从公共IP呼叫(ec2-xx-xx-xx-xxx.xx-west-2.compute.amazonaws.com)到私人IP呼叫的DNS转换是否存在问题,或者这是授权问题?

以下是AWS的Netstat跟踪(在8080上运行的Web服务器,我使用-Djava.net.preferIPv4Stack = true在IP4堆栈上运行jvm)

[ec2-user @ ip-172-31-xx-xxx~] $ sudo netstat -plnt

活动Internet连接(仅限服务器) Proto Recv-Q Send-Q本地地址外部地址状态PID /程序名称

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 9321 / java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1627 / sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1091 / master
tcp6 0 0 ::: 22 ::: * LISTEN 1627 / sshd
tcp6 0 0 :: 1:25 ::: * LISTEN 1091 / master

任何帮助?

1 个答案:

答案 0 :(得分:0)

很抱歉打扰读者。我做了一切,但问题仍在发生。然后我将客户端程序交给了我的同事,他的家庭网络就在那里工作......

所以,问题不在AWS中,而是在我的企业网络安全中阻止了请求。