【问题标题】:Access Mongo DB using reverse proxy using IIS使用 IIS 使用反向代理访问 Mongo DB
【发布时间】:2020-04-09 13:10:48
【问题描述】:

我们正在尝试使用 IIS 中的反向代理设置访问 mongo 数据库。

按照here 提供的说明在 IIS 中设置反向代理。

作为入站规则的一部分,我们以以下格式提供 Mongo DB 服务器详细信息:Mongoservername:27017。

但是我们无法使用设置反向代理的 IIS 网站连接到 mongodb。

错误详情:

NETWORK [js] recv():消息 msgLen 1347703880 无效。最小 16 最大:48000000

NETWORK [js] DBClientConnection 无法从 Servername:port 接收消息 - ProtocolError: recv(): message msgLen 13477038 80 无效。最小 16 最大:48000000

E QUERY [js] 错误:尝试在主机 'servername:port' 上运行命令 'isMaster' 时出现网络错误:connect@src/mongo/shell/mongo.js

使用的命令:

Mongo --host --port --user 用户 --password 密码(配置IIS反向代理的服务器名)

反向代理设置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="{C1}://mongoserver:27017/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

但是,当访问以下 URL 时:在浏览器上,我们收到以下消息:看起来您正试图在本机驱动程序端口上通过 HTTP 访问 MongoDB。

我们可以通过这种方式实现访问mongodb吗?

提前致谢。

【问题讨论】:

  • 当客户端未通过 SSL 连接服务器时,Mongo 将报告“尝试运行命令时出现网络错误”。您的反向代理是否损坏了它?请发布您的反向代理设置。
  • @JokiesDing 我已经用反向代理设置更新了任务。
  • 我认为该规则完全不正确。因为您试图在没有任何条件模式的规则中使用 {C:} 。看来规则正在破坏您的前端网关。
  • @JokiesDing {C} 应替换为 TCP,作为 mongo DB 用户 TCP 协议。并且 IIS 支持 HTTP 和 HTTPS。 forums.iis.net/t/1214886.aspx我想知道这是否是问题的根本原因。
  • {C}仅适用于 URL 重写中的条件模式,并且重写规则只能用于处理传入的 http 或 https 请求。 URL 重写不直接处理 tcp 连接。所以我认为该规则不应该适用于 mongoDB。

标签: mongodb iis reverse-proxy


【解决方案1】:

IIS URL 重写不处理 tcp 连接。能够使用 Nginx 流实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    相关资源
    最近更新 更多