加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

如何在Nginx反向代理中设置MongoDB

发布时间:2020-12-13 21:29:19 所属栏目:Nginx 来源:网络整理
导读:嗨,我正在尝试将Nginx设置为访问MongoDB数据库的反向代理.默认情况下,Mongo侦听27017端口.我想做的是通过nginx重定向一个主机名,例如mongodb.mysite.com,并将其传递给mongodb服务器.以这种方式从外部网络我将已知27017端口关闭,并从隐藏的URL访问我的数据库,

嗨,我正在尝试将Nginx设置为访问MongoDB数据库的反向代理.默认情况下,Mongo侦听27017端口.我想做的是通过nginx重定向一个主机名,例如mongodb.mysite.com,并将其传递给mongodb服务器.以这种方式从外部网络我将已知27017端口关闭,并从隐藏的URL访问我的数据库,就像我给出的例子.

所以我试图用这个配置设置Nginx:

server {
        listen 80;
        server_name mongo.mysite.com;
        gzip off;       

        location / {
            proxy_pass http://127.0.0.1:27017;
            proxy_redirect off;
            proxy_buffering off;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

所以在这之后,我尝试使用mongo mongo.mysite.com:80命令从我的cmd连接mongo shell,并且我收到以下错误:

2015-08-06T13:44:32.670+0300 I NETWORK  recv(): message len 1347703880 is invalid. Min 16 Max: 48000000
2015-08-06T13:44:32.670+0300 I NETWORK  DBClientCursor::init call() failed
2015-08-06T13:44:32.674+0300 E QUERY    Error: DBClientBase::findN: transport error: mongo.therminate.com:80 ns: admin.$cmd query: { whatsmyuri: 1 }
    at connect (src/mongo/shell/mongo.js:181:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed

另外在Nginx访问日志我得到这个:

94.66.184.128 - - [06/Aug/2015:10:44:32 +0000] "

有没有人有想法,这里有什么问题?谢谢!

最佳答案
我离开了这个,但是在完成了一些工作之后,我不得不再次面对这个问题,这个解决方案突然出现在我的脑海里!

NGINX基本上是一个HTTP服务器,所以通过以上述方式设置重定向和代理,它将HTTP协议中的所有通信包裹起来.所以发生的错误是,当Mongo期待原始TCP流量时,它正在获得HTTP流量.

因此,解决方案是使用NGINX的新流模块,用于处理原始TCP流量,并将上游服务器设置为指向mongodb实例.

更多信息:NGINX stream module

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读