Node.js 使用nginx、nodejs选择Mongodb服务器超时
我在web应用程序上设置了https。看来我成功了 但是,当mongodb与nodejs连接时出现了问题 我想nginx https反向代理设置会导致这个问题,但是, 我不知道在哪里以及如何接近 如果你能帮助我,我将非常感激你 环境Node.js 使用nginx、nodejs选择Mongodb服务器超时,node.js,mongodb,nginx,Node.js,Mongodb,Nginx,我在web应用程序上设置了https。看来我成功了 但是,当mongodb与nodejs连接时出现了问题 我想nginx https反向代理设置会导致这个问题,但是, 我不知道在哪里以及如何接近 如果你能帮助我,我将非常感激你 环境 Ubuntu 18.04.3 LTS Nginx 1.14.0 Mongdb4.2.3 NodeJS+Koa AWS EC2 问题 Mongodb在尝试连接时返回以下错误 来自nodejs的错误消息 服务器选择在30000毫秒后超时 来自nginx的错误消息
- Ubuntu 18.04.3 LTS
- Nginx 1.14.0
- Mongdb4.2.3
- NodeJS+Koa
- AWS EC2
- 来自nodejs的错误消息 服务器选择在30000毫秒后超时
- 来自nginx的错误消息 [错误]14495#14495:*230328上游在从上游读取响应头时过早关闭连接,客户端:210.218.178.27,服务器:songistock.net,请求:“GET/GetGroupPrice?target=UNION&dateOpt=2019-12-10 HTTP/1.1”,上游:,主机:“www.songistock.net”,参考者:“
- 在nginx中设置上游
- 重新启动Ubuntu
- 重新安装Nginx,Mogodb
- /etc/nginx/可用站点
- NodeJS代码
const Router=require('koa-Router');
const router=新路由器();
const mongoose=require('mongoose');
const winston=require('../logger/winston');
var db=猫鼬连接;
db.once('open',function(){
winston.info(“db连接”);
});
猫鼬mongodb://localhost:27017/songi_stock',
{useNewUrlParser:true,useUnifiedTopology:true});
如果需要更多信息。请评论。然后我将添加更多信息。
我真的很想解决这个问题
谢谢您的帮助。我想这是因为
nginx
主要是一个HTTP服务器,所以当您重定向到Mongo时,它会尝试使用HTTP
协议,而Mongo需要原始TCP
连接。您应该尝试用流
块包装Mongo的服务器
和上游
块
http{}
stream {
upstream stream_mongo_backend {
server localhost:27017;
}
server {
listen 27017;
location / {
proxy_pass http://stream_mongo_backend;
}
}
}
编辑:stream
需要与http
块处于同一级别。您还可以在http
块之外为/etc/nginx/conf.d/*.conf
创建include
http{}
stream {
upstream stream_mongo_backend {
server localhost:27017;
}
server {
listen 27017;
location / {
proxy_pass http://stream_mongo_backend;
}
}
}
谢谢你的回答。但当我尝试时,它不起作用。nginx表示不允许使用“stream”指令谢谢您的编辑。我刚刚尝试了您的编辑方式,但现在nginx说不允许使用“location”指令。您是将
include
放在http
块之外还是只将stream
放在块之外?两种方法都试试。谢谢@C.Gochev I解决了编辑答案的问题,并重新启动了mongodb服务。编辑是对的。Mongodb在测试你的答案时死了。看起来好像失败了。