我有这样的网络配置(参见链接 - http://s58.radikal.ru/i160/1110/4c/1c2c5d74edd0.jpg)
地点: Notebook - 包含 Zend (Windows) 上 mongodb+web 项目的 Apache+php+mongodb+php 驱动程序
router - 虚拟站(192.168.5.23接口(interface)上的nat + ipfw)
natd.conf:
interface le0
same_ports
use_sockets
redirect_port tcp 192.168.5.23:27017 27017
redirect_port tcp 192.168.5.23:27017 27017
ipfw: 允许从任何到任何
虚拟站 2 - 仅包含 mongodb(无 php、apache 或 mongodb php 驱动程序)
1 - 从笔记本 ping 到 mongodb 主机并向后 - 有效。
2 - 虚拟 mongodb 主机上的 shell:mongo 192.168.5.20:27017 - 成功连接到笔记本的 mongodb
3 - 尝试从笔记本连接到虚拟主机导致这样的错误:
C:\mongodb1.8.2\bin>mongo 192.168.9.21:27017
MongoDB shell version: 1.8.2
connecting to: 192.168.9.21:27017/test
Sun Oct 02 22:31:14 Error: couldn't connect to server 192.168.9.21:27017 shell/mongo.js:81
exception: connect failed
4 - 尝试在 php 项目 (www.vm.lcl) 中使用带有数据库的远程主机:
an exception occured while bootstrapping
connecting to vm-db1.lcl failed: Unknown error
Stack Trace:
#0 C:\www\vm-db1.lcl\library\Zirrk\Database\MongoConnection.php(16): Mongo->__construct('vm-db1.lcl')
请给我建议 - 我应该在什么方向上寻找我的错误! 非常感谢!
最佳答案
我已经通过更改 natd.conf 中的规则解决了这个问题
redirect_port tcp 192.168.5.23:27017 27017
到 重定向端口 tcp 192.168.5.23:27017 192.168.9.21:27017
在了解如何修复它之前,我已经在虚拟网络 (192.168.9.0/24) 中使用 apache+php+mongo-php-driver(mongodb - 未安装)创建网络服务器 (192.168.9.11),并尝试连接到 192.168.9.21
$m = new Mongo("mongodb://192.168.9.21:27017");
这毫无意义。我花了一整天的时间进行头脑 Storm 和谷歌搜索信息,但仍然一无所获。 (连接到服务器时超时错误)。然后我休息了几个小时,明白了,就我而言,所有流量都通过 Freebsd-gateway 主机并添加到 natd.conf
redirect_port tcp 192.168.9.11:27017 192.168.9.21:27017
重启网关服务器,它开始工作了!
关于php - 无法通过php连接到远程主机上的MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628798/