【发布时间】:2018-03-05 15:10:56
【问题描述】:
(我搜索了 SO、AWS 支持等更广泛的内容,但均未成功。)
我刚刚成功地将 MEANjs 应用程序部署到 EC2 上的 Bitnami MEAN 实例,遵循Ahmed Haque's excellent tutorial on scotch.io。作为教程/部署的一部分,我更改了 AWS 安全组以包含用于 MongoDB 流量的端口 27017。端口 27017 的 CIDR 表示法是 0.0.0.0/0 - AFAIK 的意思是“允许从任何 IP 地址访问”。
问题:为什么AWS EC2中需要开启MongoDB 27017端口 “生产”类型环境的安全组?当然,这直接将数据库暴露给 互联网。唯一应该与 Mongo 交谈的是 “/server/api”代码,在同一个实例上运行 - 所以应该不需要端口开放。
如果我通过关闭 27017 来更改端口 27017 的安全组规则,将源更改为:本地主机、内部 IP 地址、公共 IP 地址,或者将 CIDR 修改为与其中任何一个相同 - 然后是网络应用程序挂起(静态内容返回,但对 db 支持的 api 调用没有响应)。将 SG 规则改回 0.0.0.0/0 几乎可以立即“解决”问题。
我的安装一切都很好。我已经关闭了安全组中的 3000 端口(节点应用程序),并使用 Apache 将 80 端口的流量代理到 3000 端口。像这样设置,安全组中不需要打开 3000 端口;对我来说,这意味着实例上的流量不需要外部暴露端口 - 那么为什么 Mongo 端口不是这样呢?
我在直接与 Mongo 对话的“/client”代码中看不到任何内容。
我错过了什么?
提前致谢 - 约翰
【问题讨论】:
-
嗯 - 一个没有理由的反对票 - 至少你可以告诉我为什么你不认为这是一个好问题。我知道它就在代码服务器范围的服务器端,但问题直接来自编码教程。我在询问 MEANjs 应用程序的行为,它是 w.r.t 的框架/组件。部署环境。
标签: mongodb amazon-ec2 meanjs bitnami