Nginx实现TCP反向代理

之前对于Nginx的理解一直都是认为是基于HTTP层的反向代理+负载均衡,今天想用Nginx实现TCP层的反向代理,实现基于TCP的端口转发

安装

$ git clone git@github.com:yaoweibin/nginx_tcp_proxy_module.git
$ wget http://tengine.taobao.org/download/tengine-2.0.3.tar.gz
$ tar -zxvf  tengine-2.0.3.tar.gz
$ cd tengine-2.0.3
#这一步很重要,根据Ngx的源码打patch,不然就会编译失败
$ patch –p1 < /path/nginx_tcp_proxy_module
$ ./configure  --user=www --group=www --prefix=/opt/nginx --with-syslog --add-module=/path/nginx_tcp_proxy_module/
$ make && sudo make install

TCP反向代理配置

模块指令是TCP,它是不属于HTTP框架内的,所以和HTTP{}同级别。

events {
    worker_connections  1024;
}
 
http {
    ...
}
 
tcp {
 
    upstream firefoxbug {
        # simple round-robin
        server localhost:2221;
        server localhost:2222;
        check interval=3000 rise=2 fall=5 timeout=1000;
 
        #check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
 
        #check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        #check_http_send "GET / HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xx http_3xx;
    }
 
    server {
        listen 9999;
        proxy_pass firefoxbug;
    }
}

upstream的模块依赖是Ngx之前HTTP反向代理的模块,对于负载均衡的方式配置可以查看Nginx Upstream负载均衡模块

结果

所有到Nginx的9999端口都被转发到22221和22222端口,实现了forward功能。

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 65 queries in 0.365 seconds