2017-08-03 90 views
-1

我製作了一個EC2 VPC RHEL實例並部署了一個運行嵌入式Jetty Web服務器的Java應用程序。爲了簡單理解,這個Web應用程序正在提供基本的HTML請求。對於我的初始測試,我製作了一個安全組,允許所有傳入和傳出流量(全部爲0.0.0.0/0,::/0)。在亞馬遜AWS上運行Java應用程序

我期待從公共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不是問題。

我可以看到與膩子,WinSCP和我的Java客戶端唯一的區別是與膩子,我也提供私鑰作爲授權過程(身份驗證)的一部分,但其中Java或瀏覽器,我訪問它直接。

無法理解問題出在哪裏。從公共IP電話(ec2-xx-xx-xx-xxx.xx-west-2.compute.amazonaws.com)到私有IP電話的DNS翻譯是否存在問題,或者這是授權問題?

下面是AWS的用netstat跟蹤(Web服務器上運行的8080,我運行IP4 JVM與-Djava.net.preferIPv4Stack =真棧)

[EC2用戶@ IP-172-31-XX -xxx〜] $ sudo的netstat的-plnt

活動的互聯網連接(僅服務器) 原的Recv-Q發送-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

任何幫助?

+0

您是否在安全組上打開了端口8080? –

+0

我已經提到「我製作了一個安全組,允許所有傳入和傳出的流量」。 –

回答

0

抱歉打擾讀者。我做了所有事情,但仍然發生問題。然後,我將客戶端程序交給了我的同事之一,他的家庭網絡上,它的工作原理...

所以,問題不在AWS中,但在某種程度上阻礙了我的公司網絡安全請求。

+0

公司阻止除DNS,HTTP,HTTPS之外的其他端口(以及可能需要的FTP,SSH和SMTP/POP3/IMAP)是非常常見的。您可以使用SSH本地端口轉發(ssh -i user.pem -L 9000:localhost:8080 [email protected] 1.amazonaws.com)或iptables端口重定向,或者甚至是一個帶端口轉發(80到8080)的ELB,以允許您通過端口80連接出防火牆並隨後重定向到端口8080. – jarmod

+0

感謝Jarmod的提示。 –