`
m635674608
  • 浏览: 5042308 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    nginx多网站反向代理

    nginx多网站反向代理

    Cobalt_Strike_C2隐匿多级nginx反向代理1

    1. 在第一层 Nginx 反向代理节点(例如:21.67.38.47)上配置 Nginx,设置监听 80 端口,并将所有流入的 80 端口流量转发到第二层 Nginx 反向代理的域名(如 host.second.com:80)。 ``` upstream default_pools...

    nginx正向代理与反向代理详解

    本文将详细介绍Nginx如何实现正向代理和反向代理,以及这两种代理方式的应用场景。 **正向代理** 正向代理的主要作用是让内部网络中的设备(如服务器B)通过一个具有外部网络访问权限的设备(如服务器A)来访问...

    nginx配置反向代理

    【Nginx 配置反向代理】 在服务器运维中,遇到高并发访问的压力时,Apache 服务器可能无法单独应对。在这种情况下,可以利用 Nginx 的反向代理功能来分担压力,优化服务器架构。Nginx 以其轻量级、高性能的特点,常...

    nginx.conf nginx的反向代理的简单配置文件

    本资源是专门针对本博文的, nginx的反向代理的简单配置文件,给大家使用时做参考,拿走不谢,怎么一定要50字呢?

    nginx+tomcat反向代理安装配置

    `nginx`作为一款高性能的反向代理服务器和负载均衡器,常用于处理静态资源,而`tomcat`则作为Java应用服务器,主要负责运行Java Web应用。下面我们将详细探讨`nginx1.6`的安装、`tomcat7`的安装以及它们之间的反向...

    Nginx构建反向代理缓存服务器电子书

    Nginx构建反向代理缓存服务器电子书,电子书很详细的介绍了nginx构建反向代理的过程与知识

    nginx反向代理导致session失效的问题解决

    两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass http://192.168.40.159:8081/health/; #无问题的配置 } location /health-dev/ { proxy_pass ...

    Nginx反向代理服务器配置基础教程

    ### Nginx反向代理服务器配置基础教程 #### 一、系统架构 在现代Web服务部署中,Nginx作为一款高性能的HTTP和反向代理Web服务器,被广泛应用于负载均衡、反向代理以及静态资源服务等多个场景。本文将详细介绍如何...

    windows下配置nginx反向代理tomcat

    ### Windows 下配置 Nginx 反向代理 Tomcat 在 Windows 环境下配置 Nginx 作为 Tomcat 的反向代理服务器是一项常见的任务,主要用于实现负载均衡、提高安全性及提升性能等目的。本文将从下载 Nginx 开始,详细介绍...

    nginx反向代理配置文件示例,支持非80端口映射

    网上找到的nginx反向代理配置文件通常只能通过80端口进行访问,映射到其他端口时系统可能获取不到,经过找资料以及试验,找到了能够解决的配置方法。

    Nginx反向代理不能访问项目的解决办法

    ### Nginx反向代理不能访问项目的解决办法 在配置Nginx作为反向代理服务器时,有时会遇到可以通过域名正常访问Linux系统下部署的Tomcat服务器,但是却无法访问到部署在Tomcat上的具体项目的情况。这种情况通常是...

    Nginx搭建反向代理服务器过程详解

    在搭建Nginx反向代理服务器的过程中,通常需要配置Nginx的配置文件(通常是nginx.conf),在此配置文件中定义服务器、反向代理和负载均衡的相关设置。例如,可以设置监听某个端口、处理HTTP请求,并将请求转发到特定...

    Nginx 反向代理解决JS跨域

    通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338

    Nginx反向代理和proxy

    此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法

    Nginx作为反向代理时传递客户端IP的设置方法

    因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。 同样适用于前端是 Squid 或者...

    nginx做反向代理时的真实IP_nginx反向代理_

    本文将深入探讨“Nginx做反向代理时如何获取真实IP”的主题,这对于网站日志分析、安全监控以及实现个性化服务至关重要。 Nginx是一款流行的开源HTTP服务器,常用于反向代理、负载均衡和缓存服务。反向代理是指...

    Nginx的反向代理实例详解

    (1)使用Nginx反向代理,根据访问的路径跳转到不同端口的服务中,Nginx监听端口为8001。 访问 http://127.0.0.1:9001/deu/ 直接跳转到127.0.0.1:8016 访问 http://127.0.0.1:9001/vod/ 直接跳转到127.0.0

    https通信nginx反向代理443端口

    在IT行业中,HTTPS通信是确保网站数据安全传输的重要手段,而Nginx作为一款高性能的HTTP和反向代理服务器,常被用来实现这种安全通信。本文将深入探讨如何通过Nginx配置HTTPS服务器,实现443端口的反向代理,以及与...

Global site tag (gtag.js) - Google Analytics