我通过此link在Google Cloud Engine(GCE)上安装了一个MEAN堆栈。
我创建了一个新的防火墙规则来接受任何传入的请求(实际上我需要这样做吗?default-allow-http具有相同的规则吗?):
但是当我尝试使用Chrome访问IP时,出现错误。即使我更改浏览器,错误仍然存在,例如IE或Firefox:
我可能知道我做错了什么吗?
非常感谢任何建议!提前谢谢!
答案 0 :(得分:2)
安装JIRA Core应用程序后,我遇到了同样的问题,并且可以通过以下步骤解决它。老实说,我没有安装MEAN堆栈,但是解决此错误的大多数步骤必须相同(端口验证和服务执行除外)。
第一件事是在官方文档和该应用程序的安装生成的某些配置文件中检测MEAN stack应用程序使用的端口。 根据评论中的信息,应用程序使用端口3000
您转到GCP控制台添加VPC网络防火墙规则。
a。您选择实例所在的项目。
b。选择 VPC网络->防火墙规则->创建
c。名称:均值堆
d。 IP间隔:0.0.0.0/0e。协议/端口:tcp:3000; udp:3000
列出VM正在从Cloud Shell侦听或防火墙启用的端口:
$ netstat -an | grep "LISTEN "
您必须打开用于阻止防火墙的MEAN堆栈的端口。如果端口正在侦听,则无需执行此步骤:
$ sudo apt-get install ufw
$ sudo ufw enable
$ sudo ufw allow ssh
//以免被ssh与实例断开连接
$ sudo ufw allow 3000
如果该应用使用了更多控制端口,则还必须启用它们
您应该使用某些命令检查该应用程序是否已启动并正在运行(例如:sudo /opt/bitnami/ctlscript.sh启动apache)
您应该测试是否可以通过URL在本地访问MEAN stack应用。以下命令不必让我拒绝连接。
$ sudo wget http://localhost:3000
请勿输入wget生成的URL,因为必须使用外部ip来完成。
最后,在为实例的项目创建防火墙规则并启用阻止防火墙的端口后,您可以通过浏览器从任何客户端访问该
。 http://
希望我能在某个时候为您提供帮助。 GL
答案 1 :(得分:1)
出于安全原因,MEAN堆栈应用程序仅在本地主机地址上使用Express on port 3000(默认地址)运行。要将应用程序提升为在Internet上可见(在端口80上),只需在apache(或nginx或...)上创建代理反向子句。
sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf
像这样添加这样的语句: ProxyPass http://localhost:3000 ProxyPassReverse http://localhost:3000
sudo /opt/bitnami/ctlscript.sh restart apache
如果在您的实例上推出应用,您可以使用它打开它 http://address_of_VMInstance/yourapp
答案 2 :(得分:0)
更明确 - 防火墙的工作就是拦截不允许的传入连接并静默丢弃它们。
在这种情况下,您: (a)查看来自VM的公共IP地址的ping响应,表明ICMP未被防火墙阻止。 (b)查看VM发送的TCP RST数据包,以响应您的浏览器在尝试连接到VM上的TCP服务器时发送的TCP SYN数据包。这表明发送到TCP端口80的数据包也会按预期通过防火墙传递。
这里缺少的是VM上的服务器应用程序,它侦听端口80上的连接,接收HTTP请求并做出响应。你可以尝试运行,比如Apache(或者Nginx,设置起来更简单)。
在回答您的其他问题时 - 您不需要第二个tcp:80防火墙规则 - 但如果您希望默认的http规则允许数据包进入您的VM,则需要标记为" http-server"。
的VM标记答案 3 :(得分:0)
要通过 http 访问 Google VM 实例,请按照以下步骤操作:
注意:编辑端口号。根据您的要求
答案 4 :(得分:-1)
错误是CONNECTION_RESET。我的猜测是MEAN堆栈没有监听80端口。