我对AWS比较陌生,过去几天我一直在寻找一些教程,试图找出如何通过浏览器访问我的AWS ubuntu实例。
我做了什么:
第1步:我将安全组配置为接受ssh,http,https的所有流量,以查看实例中列出的公共DNS是否可访问。第二:我将我的实例的IP更改为弹性IP
第三:我写了一个简单的node.js文件,它监听端口:9000和console.logs' hello world'
由于某些原因ssh工作,我可以运行我的node.js文件,但agina我无法从浏览器访问远程实例。
任何帮助都会受到高度赞赏,因为我已经在这几天了。
谢谢!
感谢大家的快速回复!
我的问题是我没有在我的特定端口中包含TCP规则。现在我可以通过ec2-DNSNAME:9123访问该端口。
而且,只是为了澄清一下,如果我想为所有流量托管该DNS,我应该指定'任何地方'对于TCP规则,正确吗?
答案 0 :(得分:1)
我将安全组配置为接受ssh,http,https
的所有流量
在安全组中,“HTTP”不表示“任何端口上的HTTP”...表示“TCP端口80上的任何流量” - 80是标准IANA assigned port用于HTTP。
安全组不知道您传递的流量类型,只知道IP协议(例如TCP,UDP,ICMP,GRE等)和端口号(对于使用端口号的协议)以及任何协议特定信息(ICMP消息类型)。
您需要一个允许流量到端口9000的规则。
答案 1 :(得分:0)
首先转到您的EC2,看看curl http://localhost是否有效..
另外,如果您在端口9000上公开您的nodejs;您是否也在安全组上打开了9000?
答案 2 :(得分:0)
很少有事情要检查:
netstat -na | grep <PORT>
,在服务器上,您是否看到了
应用程序在正确的端口上侦听? 如果以上内容未指出您的问题所在,您可以抓取tcpdump
并仅针对来自您的网络浏览器的请求进行过滤(例如,在安装tcpdump -vvn host 10.20.30.40 port 8000
后替换您的IP和端口) 。如果您遇到网络问题(数据包未到达服务器)或者是应用程序的内容,这将告诉您。
我还建议您在进行初步故障排除时使用IP地址。这样我们就可以在进入DNS之前建立它不是网络/服务器配置。