2016-04-21 101 views
5

我通过此link在Google Cloud Engine(GCE)上安装了MEAN堆栈。如何通过浏览器访问Google Cloud Engine实例的IP地址

所以引擎创建我的实例成功,它看起来是这样的: instance's info on GCE

我创建了一个新的防火墙规则来接受任何传入的请求(实际上做我需要做的这个默认允许HTTP的有相同的规则是吗?): enter image description here

但是,当我尝试使用Chrome访问IP时,出现错误。即使当我更改浏览器时,错误仍然存​​在,例如IE或Firefox:

enter image description here

我已经证实,我可以ping地址: enter image description here

我甚至试图将一个域名指定的实例,但它仍然不能正常工作: enter image description here

我可以知道我在做什么错吗?

希望有任何建议!提前致谢!

+0

是你能解决这个您的情况下,你可以打开它?如果是这样,请发布答案,以便社区可以受益。以下是一些提示,以便排除其他问题:a)SSH在服务器中,并检查它是否在该端口上侦听。即“netstat -tulpn”。 b)验证VM阻塞连接(即iptables)中没有防火墙。 c)在Google防火墙中添加规则(“default-allow-http”可用于端口80,但服务器仍需标记)。 – Carlos

回答

-1

错误是CONNECTION_RESET。我的猜测是MEAN堆栈未在端口80上侦听。

+0

如何检查MEAN堆栈是否在端口80侦听?我如何指导它? – jasonC

+0

一个简单的方法是将ssh放到虚拟机上,然后“curl http://127.0.0.1:80”。 – Dagang

0

更明确 - 防火墙的工作仅仅是拦截不允许的传入连接并将其静默放置。

在这种情况下,您: (a)请参阅来自VM公共IP地址的ping响应,表明ICMP未被防火墙阻止。 (b)查看VM发送的TCP RST数据包,以响应浏览器在尝试连接到VM上的TCP服务器时发送的TCP SYN数据包。这表示发送到TCP端口80的数据包也按预期通过了防火墙。

这里缺少的是虚拟机上的服务器应用程序,它监听端口80上的连接,接收HTTP请求并作出响应。你可以尝试运行Apache(或者Nginx,它的设置更简单)。

在回答您的其他问题 - 你不需要第二TCP:80防火墙规则 - 但如果你想默认的HTTP规则,以允许数据包你的虚拟机,你将需要一个标签来你的虚拟机标记为“http-server”。

+0

实际上,为了测试防火墙是否正确阻止与虚拟机上任何其他端口的TCP连接,请尝试在浏览器中输入“http://104.154.39.199:8080”。在这种情况下(除非将防火墙条目修改为允许端口8080),否则应该连接超时。如果你的_add_端口8080(没有监听服务器),你会得到一个RST。 GCE与AppEngine有点不同,因为Web服务器不会自动在虚拟机上设置 - 但它更灵活,因为您可以完全控制运行的内容。但是,Nginx的安装和设置非常简单 - 只需一试! – Kevin

1

出于安全原因,MEAN堆栈应用程序仅在本地主机地址上使用Express在端口3000(默认地址)上运行。为了促使应用程序在互联网上可见(在端口80上),只需在apache(或nginx或...)上创建一个代理反向子句。

须藤纳米/opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf

添加此声明是这样的: 的ProxyPass http://localhost:3000 ProxyPassReverse http://localhost:3000

须藤的/ opt/bitnami/ctlscript。SH重启Apache

如果应用程序是lauched使用 http://address_of_VMInstance/yourapp

相关问题