[英]Why does MongoDB port 27017 need to be opened in AWS EC2 Security Group?
(我已经搜索了SO,AWS支持,但没有成功。)
按照Ahmed Haque在scotch.io上的出色教程,我已经成功地将MEANjs应用程序部署到EC2上的Bitnami MEAN实例中。 作为教程/部署的一部分,我更改了AWS安全组以包括用于MongoDB流量的端口27017。 端口27017的CIDR表示法为0.0.0.0/0-AFAIK的意思是“允许从任何IP地址访问”。
问题:为什么在“生产”类型环境中需要在AWS EC2安全组中打开MongoDB端口27017? 当然,这直接将DB暴露给了Internet。 与Mongo交谈的唯一一件事是在同一实例上运行的“ / server / api”代码-因此不需要打开端口。
如果我通过关闭27017来更改端口27017的安全组规则,将源更改为:localhost,内部IP地址,公共IP地址,或修改了CIDR以等同于所有这些,则Web应用程序将挂起(静态内容返回,但对数据库支持的api调用无响应)。 将SG规则更改回0.0.0.0/0几乎立即“修复”了挂起。
否则我的安装一切都很好。 我已经关闭了安全组中的端口3000(节点应用程序),并且正在使用Apache将端口80的流量代理到端口3000。这样设置,就不需要在安全组中打开端口3000了。 对我来说,这意味着实例上的流量不需要将端口暴露在外部-那么,为什么Mongo端口不是这样?
我看不到直接与Mongo通信的'/ client'代码中的任何内容。
我想念什么?
在此先感谢-约翰
好吧,经过进一步的调查和过夜/红酒的思考,我认为我对上述教程(或类似教程)之后的像我这样的学习者有一个答案。 遵循敏捷的原则,“完成”意味着“在生产环境中工作代码”,我试图理解作为开发人员的最后5米,他们试图使代码在有代表性的生产环境中工作(不会打开不必要的端口)-这个答案就是从那个角度写的。 (欢迎睿智的读者前来。)
发生了什么
本教程中的步骤(a)将Mongo绑定IP地址从127.0.0.1更改为0.0.0.0,并且(b)指定使用相同实例的外部IP地址的连接URL,似乎具有两个作用:
固定
在单实例MEANjs服务器上,如果将Mongo绑定IP地址更改回127.0.0.1,并将Mongo连接URL更改为127.0.0.1:27017,则可以关闭EC2安全组中的端口27017,该应用程序仍然可以运行。
要在多台MEANjs应用服务器上共享一台MongoDB(不希望误入serverfault区域):
private IP address/24, or private IP address/16
的EC2安全组CIDR规则,以允许跨指定内部IP地址范围内的实例进行访问。 以上是开发人员的“ hack”,不是对良好实践的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.