nginx实现tcp反向代理

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请求了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,458评论 21 356
  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 12,716评论 1 41
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,885评论 24 1,002
  • nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和n...
    AndyChin阅读 6,828评论 0 4
  • 我曾以为我的人生也就如此糟糕了 你曾告诉我,一切不好的都会结束的 我曾以为你说的是真的 也曾以为我们可以一辈子的 ...
    ZI_Y阅读 1,209评论 0 1