Nginx代理mongoDB TCP Stream
Nginx代理mongoDB TCPNginx代理mongoDB TCP配置复杂些Nginx代理mongoDB TCPmongoDB申请的是公有云服务器,Dataworks在专有云服务器上,连接不通。通过专有云nginx转发mongoDB 然后用SLB代理nginx端口。Dataworks连专有云即可这里讲道理nginx其实DataWorks已经可以连接,但是nginx也是台ECS需要开放端口,而
·
Nginx代理mongoDB TCP
Nginx代理mongoDB TCP
mongoDB申请的是公有云服务器,Dataworks在专有云服务器上,连接不通。
通过专有云nginx转发mongoDB 然后用SLB代理nginx端口。Dataworks连专有云即可
这里讲道理nginx其实DataWorks已经可以连接,但是nginx也是台ECS需要开放端口,而DataWorks ip不固定,添加会很复杂。所以用SLB代理一层,这样就不需要添加白名单了。
如果说没有这种限制,到nginx结束了
mongodb需要tcp 而nginx提供了http 所以会出错 需要在nginx.conf中增加如下配置
配置
采用docker
docker run --name nginx_mongodb -d -p 3717:80 -v /data/nginx3/html:/usr/share/nginx/html -v /data/nginx3/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx3/logs:/var/log/nginx -v /data/nginx3/conf.d:/etc/nginx/conf.d -v /data/nginx3/tcp.d:/etc/nginx/tcp.d -d nginx
最好能进nginx里看下 –with-stream这个模块有没有,stream需要这个模块的支持
#查看
nginx -V
最简单配置,直接修改/data/nginx3/conf/
的nginx.conf
即可
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream stream_mongo {
# 监听mongoDB服务的ip和端口
server xx:3717;
}
server {
#注意配置80,监听nginx的
listen 80;
#proxy_connect_timeout 8s;
#proxy_timeout 24h;
proxy_pass stream_mongo;
}
}
然后docker restart或者reload一下即可
复杂些
nginx.conf (请注意,stream配置不能放到http内,即不能放到/data/nginx/conf.d/,因为stream是通过tcp层转发,而不是http转发)
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
.................
}
# tcp层转发的配置文件夹
include /data/nginx3/tcp.d/*.conf;
新建一个以.conf结尾的配置文件
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream stream_mongo {
# 监听mongoDB服务的ip和端口
server xx:3717;
}
server {
#注意配置80,监听nginx的
listen 80;
#proxy_connect_timeout 8s;
#proxy_timeout 24h;
proxy_pass stream_mongo;
}
}
然后重启即可。
更多推荐
已为社区贡献3条内容
所有评论(0)