【问题标题】:How to connect nginx to local mongodb如何将nginx连接到本地mongodb
【发布时间】:2019-11-15 04:30:39
【问题描述】:

我有 nginx 在服务器上运行我的 (node.js/react) 应用程序。但我似乎无法连接到数据库。

在 nginx.conf 文件中,我在 http 中添加了以下内容。

http {
    ...
    server {
        listen       80;
        server_name  localhost;
    ...}
...}

在 http 部分上方,我有以下内容,

stream {
    server {
        listen  4000;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass    stream_mongo_backend;
    }

    upstream stream_mongo_backend {
      server 127.0.0.1:27017;
  }
}

我启动 nginx 服务器,应用程序在 localhost 上运行,打开登录页面但我无法登录,因为它仍然没有连接到数据库(mongodb)。 我不确定我的端口号是否错误,或者我是否缺少 nginx.conf 中的某些配置行。

编辑:好的,我之前弄错了。此时我不应该连接到 mongodb。我应该连接到我的应用程序的后端服务器,该服务器将在 4000 运行。所以现在我在 http 中为 /api/ 添加了一个新位置,并将所有请求代理到 4000。不过我还有一个问题。我必须单独运行我的后端服务器才能正常工作。对于前端,我创建了一个文件夹并将所有构建文件放在那里,以便 nginx 从那里启动网络服务器。对后端执行相同操作不会启动服务器。有没有办法让 nginx 也启动后端服务器? 我也可以让前端在没有构建文件的情况下直接运行吗?像 node 会用 npm start 一样吗?

【问题讨论】:

    标签: node.js reactjs mongodb nginx


    【解决方案1】:

    端口号是正确的。尝试打开 mongo shell 并查看您是否能够访问 mongo 实例。如果没有,您将需要运行 sudo service mongodb start 来启动它。

    【讨论】:

    • 我确实运行了 mongod。运行 mongo 后,我还可以查看数据库和集合。我不完全确定流部分中的端口号 4000。当我从 npm start 运行我的客户端时,我的服务器运行在 4000,这就是我使用该数字的原因。这也是在 Windows 10 上。
    【解决方案2】:

    猜想已经很晚了,但是您不需要为后端设置 nginx 来连接本地 mongodb。

    如果你想在没有构建文件的情况下运行它,你需要先通过yarn startnode run 或类似的东西运行前端和后端服务器。

    然后绕过从 80 端口到本地主机服务器的调用。 比如你的 FE 运行在 3000 端口,BE 运行在 5000 端口。 那么你的 nginx 应该是:

    http {
    ...
    server {
        listen       80;
        server_name  localhost;
    
        location /api/ {
           proxy_pass localhost:5000;
         }
    
        location / {
            proxy_pass localhost:3000;
         }
    ...}
    ...}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-28
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      相关资源
      最近更新 更多