首页 > 解决方案 > Mongodb服务器选择超时与nginx,nodejs

问题描述

我在我的 Web 应用程序上遇到了 https 设置。看起来我已经成功了。

但是,mongodb 与 nodejs 连接时出现问题。

我猜 nginx https 反向代理设置会导致这个问题,但是我不知道在哪里以及如何处理。

如果你能帮助我,我将非常感谢你。

环境

问题

Mongodb在尝试连接时返回以下错误

我试过

设置和代码

upstream stream_mongo_backend {
   server localhost:27017;
}

server {
   listen 27017;

   location / {
      proxy_pass http://stream_mongo_backend;
   }
}

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
 listen 443 ssl;
 server_name songistock.net www.songistock.net;

 ssl_certificate /etc/letsencrypt/live/www.songistock.net/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/www.songistock.net/privkey.pem;

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
 location / {
         proxy_pass http://127.0.0.1:3000;

         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header        X-Forwarded-Proto $scheme;
         proxy_read_timeout      120;
         proxy_http_version 1.1;
         proxy_redirect off;
        }
}

此代码使用 https 设置

const Router = require('koa-router');
const router = new Router();
const mongoose = require('mongoose');

const winston = require('../logger/winston');

var db = mongoose.connection;
db.once('open', function () {
    winston.info("db connected");
});

mongoose.connect('mongodb://localhost:27017/songi_stock', 
{ useNewUrlParser: true,useUnifiedTopology: true });

如果需要更多信息。请给出意见。然后我将添加更多信息。我真的很想解决这个问题。

感谢您的帮助。

标签: node.jsmongodbnginx

解决方案


我认为这主要是因为nginx它主要是一个 HTTP 服务器,所以当您重定向到 Mongo 时,它会尝试使用该http协议,但 Mongo 需要一个原始TCP连接。您应该尝试用块包装Mongo 的和server块。upstreamstream

编辑:stream需要与http街区处于同一水平。您还可以为块/etc/nginx/conf.d/*.conf之外的内容进行包含。http

http{}
stream {

upstream stream_mongo_backend {
   server localhost:27017;
   }

server {
   listen 27017;

   location / {
      proxy_pass http://stream_mongo_backend;
     }
   }
}

推荐阅读