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 {
server xx:3717;
}
server {
listen 80;
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 {
.................
}
include /data/nginx3/tcp.d/*.conf;
新建一个以.conf结尾的配置文件
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream stream_mongo {
server xx:3717;
}
server {
listen 80;
proxy_pass stream_mongo;
}
}
然后重启即可。
|