使用 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负载均衡,可在一定程度上解决此问题。

目录
相关文章
|
1月前
|
前端开发 应用服务中间件 nginx
nginx中配置不输入端口(指定地址)访问项目的方法
nginx中配置不输入端口(指定地址)访问项目的方法
27 0
|
3月前
|
应用服务中间件 nginx Docker
docker安装nginx并暴露端口
【1月更文挑战第9天】docker安装nginx并暴露端口
144 0
|
8月前
|
应用服务中间件 开发工具 nginx
安装 Nginx 修改默认端口
用远程工具连接我们上次购买的机器,这里我要介绍一个知识点,博主使用的工具是 MobaXterm,这个工具有一个多操作的功能,在下图的位置可以开启多操作,然后连接你的服务器机子即可:
163 0
|
4月前
|
Java 应用服务中间件 Linux
linux安装jdk1.8 +nginx +springboot 实现通过nginx80转发8888端口访问springboot程序
linux安装jdk1.8 +nginx +springboot 实现通过nginx80转发8888端口访问springboot程序
96 0
|
6月前
|
搜索推荐 应用服务中间件 nginx
67分布式电商项目 - nginx基于端口配置虚拟主机
67分布式电商项目 - nginx基于端口配置虚拟主机
26 0
|
7月前
|
应用服务中间件 nginx
Nginx 代理80端口转443端口
Nginx 代理80端口转443端口
|
9月前
|
网络协议 应用服务中间件 nginx
Nginx TCP 端口转发
Nginx TCP 端口转发
129 0
|
9月前
|
应用服务中间件 nginx Windows
使用Nginx实现反向代理(80端口转发到Tomcat)
修改Nginx的配置文件,在Nginx安装目录中的conf文件夹中
|
11月前
|
应用服务中间件 nginx
Nginx:proxy_pass和try_files 301跳转带了端口
Nginx:proxy_pass和try_files 301跳转带了端口
380 0
|
11月前
|
前端开发 应用服务中间件 测试技术
Nginx - 记一次Nginx端口转发失败案例
Nginx - 记一次Nginx端口转发失败案例
252 0

推荐镜像

更多