可以本地连接,但不能远程连接


Can connect locally but not remotely

我在连接我的php客户端到我的mongodb服务器面临一个问题。

基本上,我在我的服务器上安装了MongoDB(托管在美国),当我通过ssh连接到它时,我可以在本地连接到它。

但是我不能从我的php客户端远程连接到这个服务器,这里是我得到的错误:

致命错误:未捕获的异常'MongoConnectionException'伴有消息'Failed to connect to: xxx.xxx.xxx. xxx.xxx.xxx. '。在/var/www/pages/news.php:9堆栈跟踪:#0/var/www/pages/news.php(9): MongoClient->__construct('mongodb://xxx.xxx…')#1 {main}抛出在/var/www/pages/news.php第9行

我使用这个是为了从我的php客户端创建一个连接:

$m = new MongoClient("mongodb://xxx.xxx.xxx.xxx");

我的远程服务器是Ubuntu 12.04,我已经在iptables中添加了INPUT和OUTPUT规则,以允许端口27017的流量。

我真的不知道问题从何而来?(我没有添加任何身份验证凭证到我的mongodb实例,这是一个新的测试目的)。

如果有人有同样的问题,并找到了解决方案,这可能是有帮助的,谢谢!

找到问题了:

我输入这个命令是为了显示侦听服务和它们对应的端口:

netstat -anltp | grep "LISTEN"

我看到SSH正在监听IP: 0.0.0.0但是mongod正在监听本地接口127.0.0.1

我只需要更新mongodb配置文件在这里:

/etc/mongodb.conf,设置参数"bind_ip"为:0.0.0.0并取消"port"字段的注释,使用默认值:27017。

结果,现在我可以从客户机连接到服务器上的mongod实例。