Nginx的tcp反向代理初探

只要对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中

 

[html]  view plain  copy
 
  print ?
  1. $ wget 'http://nginx.org/download/nginx-0.7.65.tar.gz'  
  2. $ tar -xzvf nginx-0.7.65.tar.gz  
  3. $ cd nginx-0.7.65/  
  4. $ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch  
  5. $ ./configure --add-module=/path/to/nginx_tcp_proxy_module  
  6. $ make  
  7. $ 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这个文件,在最末尾添加

 

[html]  view plain  copy
 
  print ?
  1. tcp {  
  2.     upstream tcp_proxy_oldmtn {  
  3.         # simple round-robin  
  4.         server localhost:8201;  
  5.   
  6.         #check interval=3000 rise=2 fall=5 timeout=1000;      
  7.     }  
  8.   
  9.     server {  
  10.         listen 8200;  
  11.         proxy_pass tcp_proxy_oldmtn;  
  12.     }  
  13. }  


这个表示,当客户端使用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

2.nginx_tcp_proxy_module

http://yaoweibin.github.io/nginx_tcp_proxy_module/

3.http://yaoweibin.github.io/nginx_tcp_proxy_module/README.html

4.Nginx实现TCP反向代理

http://www.firefoxbug.com/index.php/archives/2775/

5.nginx支持TCP代理有什么作用

http://www.oschina.net/question/1457467_234303

6.实现TCP透明代理

http://blog.csdn.net/zhuweisky/article/details/25787787

 

http://blog.csdn.net/oldmtn/article/details/47613509

猜你喜欢

转载自m635674608.iteye.com/blog/2343521
今日推荐