美文网首页
nginx实现tcp反向代理

nginx实现tcp反向代理

作者: SecondRocker | 来源:发表于2016-06-17 01:15 被阅读3408次

tcp反向代理默认不在nginx的模块里,想要nginx实现反向代理tcp请求,需要自己编译tcp模块到nginx中。
步骤如下:

  1. 下载、解压缩nginx 源码
wget '[http://nginx.org/download/nginx-1.2.1.tar.gz](http://nginx.org/download/nginx-1.2.1.tar.gz)'
tar -zxvf nginx-1.2.1.tar.gz
  1. 下载tcp模块源码
 git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git
  1. 给nginx源码打patch
cd nginx-1.2.1
patch -p1 < ../nginx_tcp_proxy_module/tcp.patch
  1. 编译、安装nginx
./configure --add-module=../nginx_tcp_proxy_module --prefix=/opt/nginx
make && sudo make install 
  1. 配置nginx.conf
    tcp模块是不属于HTTP框架内的,所以和HTTP{}同级别,配置如下,则会监听8080端口的tcp连接,反向代理到2000、3000端口
tcp{
        upstream cluster {
                server localhost:2000;
                server localhost:3000;
        }
        server{
                listen 8080;
                proxy_pass cluster;
        }
}

6.测试

服务器端代码

require 'socket'                # 获取socket标准库
 
server = TCPServer.open(2000)   # Socket 监听端口为 2000
loop {                          # 永久运行服务
  Thread.start(server.accept) do |client|
    client.puts(Time.now.ctime) # 发送时间到客户端
    client.close
  end
}

客户端代码

require 'socket'

socket = TCPSocket.open('localhost',8080)
puts socket.gets
socket.close

程序运行后,会打印出当前时间,表明nginx已可以反向代理tcp请求了。

相关文章

网友评论

      本文标题:nginx实现tcp反向代理

      本文链接:https://www.haomeiwen.com/subject/dtfvdttx.html