Nginx的tcp反向代理初探

前面一篇文章只是简单使用了一些nginx的http代理,大家可以看到,非常的easy。


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

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


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值