如何将Nginx连接到本地mongodb

时间:2019-07-04 12:18:24

标签: node.js reactjs mongodb nginx

我有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从那里启动Web服务器。对后端执行相同操作不会启动服务器。有没有办法让Nginx也启动后端服务器? 还可以让前端直接运行而无需构建文件吗?像节点会启动npm吗?

2 个答案:

答案 0 :(得分:0)

端口号正确。尝试打开mongo外壳程序,看看是否能够访问mongo实例。否则,您将需要运行sudo service mongodb start来启动它。

答案 1 :(得分:0)

猜猜已经晚了,但您不需要为后端设置 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;
     }
...}
...}