使用 Nginx 转发 Oracle 端口

简介: 某客户V3环境应用服务器想要连通V2环境Oracle数据库进行数据存储,解决办法是在V2环境搭建一台带nginx的ECS用来端口转发。

问题背景
某客户V3环境应用服务器想要连通V2环境Oracle数据库进行数据存储,解决办法是在V2环境搭建一台带nginx的ECS用来端口转发。

原理图:
_20180401214328

环境
• OS: Centos
• Nginx: 1.12.1

编译安装Nginx
从1.9.0开始,nginx就支持对TCP的转发,而到了1.9.13时,UDP转发也支持了。提供此功能的模块为ngx_stream_core。不过Nginx默认没有开启此模块,所以需要手动安装。

cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar zxf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx --with-stream --without-http
make && make install

配置Nginx
TCP转发
目标:通过3000端口访问本机Mysql(其中mysql使用yum安装,默认配置文件)
/usr/local/nginx/conf/nginx.conf配置如下:

user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

stream {
    upstream cloudsocket {
       hash $remote_addr consistent;
       server 192.168.0.7:1521 weight=5 max_fails=3 fail_timeout=30s;
    }
    server {
       listen 3000;#公网机器监听端口
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass cloudsocket;
    }
}

首先,先通过1521端口访问oracle:

222

然后,启动Nginx:
333

最后使用3000端口访问mysql:

安装过程中可能遇到的问题
安装nginx的时候遇到如下问题:

1.    Configuration summary  
2.      + using system PCRE library  
3.      + OpenSSL library is not used  
4.      + using builtin md5 code  
5.      + sha1 library is not found  
6.      + using system zlib library

出现以上问题的原因是,在安装nginx的时候没有指定openssl的解压路径。正确的做法如下:

./configure --prefix=/usr/local/nginx  --with-openssl=/usr/local/openssl-1.0.1j --with-http_ssl_module

如果pcre和zlib出现类似的问题,指定路径就可。

--with-pcre=/usr/local/pcre-7.7 --with-zlib=/usr/local/zlib-1.2.3 --with-http_stub_status_module

该架构存在的问题以及解决方式
该架构虽然解决了 V3环境 无法直接连通V2环境,但是通过代理转发,也存在一定问题,例如单点故障问题,若代理服务器负载过高,会影响整个架构的运行。
解决方式是,在代理服务器层增加SLB负载均衡,可在一定程度上解决此问题。

目录
相关文章
|
6月前
|
应用服务中间件 网络安全 nginx
【Nginx】Nginx启动显示80端口占用问题的解决方案
【Nginx】Nginx启动显示80端口占用问题的解决方案
1144 1
|
16天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
4月前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
5月前
|
SQL Oracle 关系型数据库
改变Oracle数据库连接端口
改变Oracle数据库连接端口
87 4
|
应用服务中间件 开发工具 nginx
安装 Nginx 修改默认端口
用远程工具连接我们上次购买的机器,这里我要介绍一个知识点,博主使用的工具是 MobaXterm,这个工具有一个多操作的功能,在下图的位置可以开启多操作,然后连接你的服务器机子即可:
274 0
|
6月前
|
前端开发 应用服务中间件 nginx
nginx中配置不输入端口(指定地址)访问项目的方法
nginx中配置不输入端口(指定地址)访问项目的方法
|
6月前
|
应用服务中间件 nginx Docker
docker安装nginx并暴露端口
【1月更文挑战第9天】docker安装nginx并暴露端口
380 0
|
11月前
|
Java 应用服务中间件 Linux
linux安装jdk1.8 +nginx +springboot 实现通过nginx80转发8888端口访问springboot程序
linux安装jdk1.8 +nginx +springboot 实现通过nginx80转发8888端口访问springboot程序
165 0
|
搜索推荐 应用服务中间件 nginx
67分布式电商项目 - nginx基于端口配置虚拟主机
67分布式电商项目 - nginx基于端口配置虚拟主机
53 0