在工作生活中经常会使用到代理,而nginx也是最常用的web服务器之一,想必大家都很熟悉。
这里用nginx做一个简单的socket代理服务端。
应用场景:客户端A想要访问服务器B的数据库服务,但奈何网络受限端口不通,另外正好有一台服务器C既可以被客户端A访问,也可以访问服务器B的数据库服务,这时可以通过nginx做一个socket代理,以实现客户端A访问到B的数据库。
1. 安装nginx
我平时比较习惯使用tengine,官方下载地址
下载完成后使用tar解压:
tar zxvf tengine-2.3.2.tar.gz预编译(为了最小化演示,不添加其他参数,默认安装位置为/usr/local/nginx/,实际使用中请根据需求自行修改):
./configure --with-stream #这里需要添加stream模块,如在实际安装中需要其他模块请自行添加编译安装:
make && make install2. 修改nginx配置文件
示例配置文件,在默认配置文件中添加stream区域:
worker_processes1; events { worker_connections1024; } #添加以下配置实现socket代理 stream{ server{ listen 8080; #nginx socket监听端口 proxy_pass xxxxx:1521;#服务器B的IP地址和数据库服务监听端口 } } #添加以上配置实现socket代理 http { include mime.types; default_typeapplication/octet-stream; sendfileon; keepalive_timeout65; server { listen 80; server_namelocalhost; location / { root html; indexindex.html index.htm; } error_page 500 502 503 504/50x.html; location = /50x.html { root html; } } }3. 启动nginx
/usr/local/nginx/sbin/nginx4. 测试
现在只需要在客户端A通过数据库工具访问 nginx服务器IP的8080端口,就可以登录到服务器C的数据库了。
5. nginx安装时可能遇到的报错
./configure: error: the HTTP rewrite module requires the PCRE library.
解决方法:yum -y install pcre-devel 内网请自行搭建yum源或编译安装,如果是编译安装需要在nginx预编译时添加参数指定路径
./configure: error: SSL modules require the OpenSSL library.
解决方法:yum -y install openssl openssl-devel 内网请自行搭建yum源或编译安装,如果是编译安装需要在nginx预编译时添加参数指定路径