Nginx的tcp反向代理初探
前面一篇文章只是简单使用了一些nginx的http代理,大家可以看到,非常的easy。
只要对nginx.conf稍作简单的配置就可以实现http反向代理了。但是我们现在的应用场景不一样,我们现在需要tcp的反向代理。
因为tcp反向代理默认不在nginx的模块里面,而需要自己编译进去,可喜的是,阿里的大牛已经将tcp反向代理弄好了。我们只要直接拿来用就好了,这个时候就是发扬鲁迅先生的拿来主义就好了。
ubuntu 12.04
接着前面那句话,TCP代理,就是中间有个代理。客户所有的服务都交给代理来做,而代理再把这些服务转交给真正的后端服务器来处理,中间的代理只做一个转发的操作。
详细的大家可以看参考5里面。
nginx最新的版本为1.9.3,我将其和在参考2里面下载的nginx_tcp_proxy_module一起编译,就是编译不过。
最终,我还是下载了1.7.2版本的nginx。
这里的nginx-1.7.2-exe是编译时生成的文件夹。
$ 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
根据这些步骤,就可以安装好了。
只要打开/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端口(这里后端服务器也是本机)。
因为是在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
- 上一篇: 安装nginx及tcp代理
- 下一篇: 基于SpringBoot Shiro CAS单点登录实现