目前,我正在为应用程序部署构建一个云环境,并且在通过HTTP/S连接到正在运行的Node/Express REST服务器时遇到了问题,我使用GCE作为我的VM提供程序,并开始尝试从我的个人计算机上测试API服务。如果可能的话,我想暂时避免Docker撰写,因为我想在习惯了Docker之后构建一个Kubernetes部署。
另外,我的VM防火墙设置确实允许HTTP和HTTPS请求进入机器。
我已经能够使用VM的外部IP对我的实例进行SSH,并设置了一个正在运行的坞容器。然后,我尝试使用XX.XXX.XX.XXX:81:81上的run命令发布相同的端口443和81。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf3f315dd947 repo/dev-api:latest "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:81->81/tcp, 443/tcp api在此之后,我想做一个HTTPS设置,但希望首先解决这个HTTP问题。我的服务器正确运行,并监听HTTPS端口443和HTTP端口81 (端口80导致VM与SSH完全断开连接,但这是另一个问题)。然而,使用我的浏览器直接连接到端口443或81的外部IP,使用https://或http://,的任何组合,我仍然会得到一个“无法到达这个站点”的错误。
我还尝试了一下VM --它可以直接对外部IP进行平分,但对于http://预置到IP上则不起作用。
我非常感谢你在这方面的帮助-谢谢你抽出时间。
发布于 2021-02-12 13:03:39
您的问题是端口81和443上的通信量无法到达VM。
你得检查两个防火墙。
首先检查GCP防火墙,看看是否存在允许在端口81和443上输入流量的适当规则。
一个是VM防火墙。我猜这是基于Linux的。默认情况下,大多数linux系统不要阻塞任何传入的通信量。
如果不这样,您可以用gcloud计算--project=my-proj-name防火墙--规则创建测试--规则1--方向=入口--优先级=1000--网络=默认-action--规则=tcp:81,tcp:443 --源-范围=0.0.0.0/0-目标-标记=坞-test- VM (您必须向VM中添加docker-test-vm网络标记才能正常工作)。
如果仍然无法连接,请检查VM的防火墙。我想是基于Linux的。
要验证这一点,请运行以下命令:sudo iptables -L;您应该看到如下所示:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination 这是默认的防火墙配置,这意味着允许所有通信量(打开和输出)。
你可以读这里。
为了进一步验证这一点,您可以运行sudo netstat -tulpn | grep LISTEN来获得打开端口的列表(81和443应该在列表中)。
如果它们没有检查您的服务是否正确运行,并在给定端口上侦听。如果没有,尝试重新启动它,并重复最后一步。
您可以查看类似的我关于解决缺乏连接性问题的答案:
https://stackoverflow.com/questions/66167715
复制相似问题