只要对nginx.conf稍作简单的配置就可以实现http反向代理了。但是我们现在的应用场景不一样,我们现在需要tcp的反向代理。
因为tcp反向代理默认不在nginx的模块里面,而需要自己编译进去,可喜的是,阿里的大牛已经将tcp反向代理弄好了。我们只要直接拿来用就好了,这个时候就是发扬鲁迅先生的拿来主义就好了。
0. 测试的环境
ubuntu 12.04
1. TCP代理知识普及
接着前面那句话,TCP代理,就是中间有个代理。客户所有的服务都交给代理来做,而代理再把这些服务转交给真正的后端服务器来处理,中间的代理只做一个转发的操作。
详细的大家可以看参考5里面。
2. 下载相应的安装包
nginx最新的版本为1.9.3,我将其和在参考2里面下载的nginx_tcp_proxy_module一起编译,就是编译不过。
最终,我还是下载了1.7.2版本的nginx。
这里的nginx-1.7.2-exe是编译时生成的文件夹。
3. 将tcp模块编译进nginx中
- $ wget 'http://nginx.org/download/nginx-0.7.65.tar.gz'
- $ tar -xzvf nginx-0.7.65.tar.gz
- $ cd nginx-0.7.65/
- $ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch
- $ ./configure --add-module=/path/to/nginx_tcp_proxy_module
- $ make
- $ make install
网上的代码一般是这样安装tcp模块的。
这里需要注意的就是/path,其实就是tcp_proxy模块所在的位置.
我的tcp代理模块解压后的路径为:/home/hwh/pt_Nginx/test0/nginx_tcp_proxy_module-master
其他的和上面一样就可以了。
所以我的步骤为:
$cd /home/hwh/pt_Nginx/test0/nginx-1.7.2
$patch -p1 < /home/hwh/pt_Nginx/test0/nginx_tcp_proxy_module-master/tcp.patch
&./configure --prefix=/home/hwh/pt_Nginx/test0/nginx-1.7.2-exe --add-module=/home/hwh/pt_Nginx/test0/nginx_tcp_proxy_module-master
$make
$make install
根据这些步骤,就可以安装好了。
4. 添加tcp代理
只要打开/home/hwh/pt_Nginx/test0/nginx-1.7.2-exe/conf/nginx.conf这个文件,在最末尾添加
- tcp {
- upstream tcp_proxy_oldmtn {
- # simple round-robin
- server localhost:8201;
- #check interval=3000 rise=2 fall=5 timeout=1000;
- }
- server {
- listen 8200;
- proxy_pass tcp_proxy_oldmtn;
- }
- }
这个表示,当客户端使用tcp(非浏览器访问)时,若访问到nginx服务器的8200端口是,就会将其转交给后端服务器的8201端口(这里后端服务器也是本机)。
5. 编写代码测试
因为是在ubuntu下面的,而使用qt非常方便,我就使用Qt写了个小的客户端简单测试了一下。
客户端:
服务端:
经过测试可以看到,我们的tcp服务端仅在8201监听,而客户端却连的是8200端口,该端口是nginx的监听端口。
结果是可以正却联通的。
至此nginx的tcp反向代理搞定。
参考:
1.nginx tcp代理模块nginx_tcp_proxy_module安装及使用
http://m.blog.csdn.net/blog/xtjsxtj/40743735
http://yaoweibin.github.io/nginx_tcp_proxy_module/
3.http://yaoweibin.github.io/nginx_tcp_proxy_module/README.html
http://www.firefoxbug.com/index.php/archives/2775/
http://www.oschina.net/question/1457467_234303
http://blog.csdn.net/zhuweisky/article/details/25787787
http://blog.csdn.net/oldmtn/article/details/47613509