google-cloud-platform - 外部 IP 无法访问 Google 云实例
问题描述
我有一个谷歌云虚拟机实例,它基本上是由市场服务“Bitnami 认证的 Elasticsearch”创建的。我无法通过外部 IP 公开访问它。我也允许来自防火墙的 HTTP 和 HTTPS 流量。
我可以通过 ssh 连接它,但不能通过 HTTP 连接。经过一番研究,我知道我的实例只能从 localhost(127.0.0.1) 访问,但我不知道如何使它可以公开访问。
我运行了netstat -antup
命令,结果如下。从中我只知道了 localhost(127.0.0.1):
我有另一个运行良好的实例。我可以通过 HTTP 访问它,但不是这个,不知道为什么。
工作正常的实例,我将其与此进行了比较,我能弄清楚的唯一区别是正确的实例正在侦听所有允许的端口 9200。截图如下:
PS:我的应用程序在端口 9200 上运行(我可以通过 ssh 登录并能够从服务器本身运行 curl)
我创建了一个防火墙规则来为所有人启用端口 9200。如下:
以下是适用于我的实例的防火墙规则:
我也在这里检查了所有类似的问题,但无法解决这个问题。任何帮助,将不胜感激。如果需要有关此的更多信息,我将提供。
提前致谢。
解决方案
ssh 是 22 端口。如果你想通过 http 和 https 访问,你必须允许端口 80 和 443 (tcp)
请注意,127.0.0.1 不是您的外部 IP 地址,您必须保留一个静态外部 IP
此外,如果您的实例已重新启动,则会分配一个新的临时 IP:
仅在 VM 停止并重新启动或实例终止之前,临时外部 IP 地址仍附加到 VM 实例。如果实例停止,分配给该实例的任何临时外部 IP 地址都会释放回通用 Compute Engine 池,并可供其他项目使用。当停止的实例再次启动时,会为该实例分配一个新的临时外部 IP 地址。
推荐阅读
- redirect - 进行验证码验证后如何验证 nginx 上的两个参数
- python - 将 super() 设置为类属性是否有任何潜在问题?
- excel - 用于打开受密码保护的 Excel 工作表的 VBA 代码
- c# - 我使用多部分表单数据通过 REST api 将图像发送到服务器,但它已损坏
- react-native - connect() 中的 mapStateToProps() 必须返回一个普通对象,而不是收到 Undefined
- mysql - Mysql:GROUP BY 自定义日期间隔
- android - Proguard 问题:“java.lang.IllegalArgumentException:非法查询表达式:在查询中找不到哈希键条件”
- jquery - 如何在 mvc 中使用 jquery 从数据库中获取复选框值
- javascript - 将函数参数传递给 NoeJs 中的回调主体
- csv - 当分隔符在 JasperReports 中的字符串中时,如何抑制字符串引号?