nginx实现TCP反向代理

当前实验环境:

nginx已安装版本1.11.13

需要动态扩展安装模块nginx_tcp_proxy_module,实现tcp反向代理

实验步骤:

1、nginx当前版本1.11.13(nginx已安装)

复制代码
# /alidata/nginx/sbin/nginx -v
nginx version: nginx/1.13.7

2、查看之前的安装模块

复制代码
# /alidata/nginx/sbin/nginx -V
nginx version: nginx/1.13.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/ --add-module=/soft/soft/ngx_http_substitutions_filter_module/ --add-module=/soft/soft/ngx_http_google_filter_module

3、进入nginx源码安装包

复制代码
# cd /usr/src/nginx-1.13.7/
# ls
auto     CHANGES.ru  configure  html     Makefile  objs              README
CHANGES  conf        contrib    LICENSE  man       pcre-8.12.tar.gz  src

4、动态增加tcp反向代理模块--with-stream=dynamic (这个模块和第三方模块nginx_tcp_proxy_module-master是一样的)

复制代码
# ./configure  --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/ --add-module=/soft/soft/ngx_http_substitutions_filter_module/ --add-module=/soft/soft/ngx_http_google_filter_module --with-stream=dynamic
# make #这里只做编译,千万不要make install

5、查看当前目录的 objs/ 目录下会生成一个.so文件[ngx_stream_module.so]

复制代码
# ls objs/
addon         nginx              ngx_auto_headers.h  ngx_stream_module_modules.c  src
autoconf.err  nginx.8            ngx_modules.c       ngx_stream_module_modules.o
Makefile      ngx_auto_config.h  ngx_modules.o       ngx_stream_module.so

6、在nginx的安装目录下创建modules目录,并将这个.so文件移动到 modules目录下

复制代码
# cd /alidata/nginx/
# mkdir modules                    #存在就不用创建了
# chown nginx.nginx modules
# cp /usr/src/nginx-1.13.7/objs/ngx_stream_module.so  /alidata/nginx/modules/

7、将模块加载到nginx主配置文件中,并添加tcp的配置

复制代码
# vi /alidata/nginx/conf/nginx.conf
load_module modules/ngx_stream_module.so;     #加载模块

events {
    ......
}
#-------------------- HTTP -------------------------------
http {
    ......
}


#tcp和http是同等级的,这里只做tcp反向代理配置
#-------------------- TCP/UDP -------------------------------
#include /alidata/nginx/tcp.d/*.conf;      #也可以将tcp的配置指向单独的配置文件


stream {                                   #stream是固定写法,代表这是tcp协议,如果是通过第三方模块【nginx_tcp_proxy_module】安装的这里就换成tcp

    upstream proxy_swoole {
        server 172.16.100.17:8090;
    }

    server {
       listen 10001;            #访问http://ip:10001 跳转到172.16.100.17:8089
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass proxy_swoole;
    }
}

说明一下 tcp 和 stream 的区别:

复制代码
tcp {                                    #tcp表示通过第三方模块传统安装nginx_tcp_proxy_module

        upstream cluster {
                server localhost:2000;
                server localhost:3000;
        }
        server{
                listen 8080;
                proxy_pass cluster;
        }
}

--------------------------------------------------------------------------
stream {                                  #stream表示通过第三方模块动态安装 --with-stream=dynamic
        upstream cluster {
                server localhost:2000;
                server localhost:3000;
        }
        server{
                listen 8080;
                proxy_pass cluster;
        }
}

8、重新加载nginx服务

复制代码
# /alidata/nginx/sbin/nginx -s reload
# netstat -npult|grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      34716/nginx         
tcp        0      0 0.0.0.0:10001               0.0.0.0:*                   LISTEN      34716/nginx         
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      34716/nginx  

9、访问http://172.16.12.9:10001,能访问到说明跳转成功

相关推荐
特立独行的猫a4 分钟前
强大的鸿蒙HarmonyOS网络调试工具PageSpy 介绍及使用
网络·华为·harmonyos
彬彬醤17 分钟前
TikTok矩阵有哪些运营支撑方案?
大数据·网络·网络协议·tcp/ip·矩阵·udp·产品运营
楠枬24 分钟前
DNS 域名解析
服务器·网络·网络协议
XMZH0304232 分钟前
网络编程;TCP多进程并发服务器;TCP多线程并发服务器;TCP网络聊天室和UDP网络聊天室;后面两个还没写出来;0911
服务器·网络·tcp/ip·udp·tcp
evo-master39 分钟前
网络编程-HTTP
linux·网络
bug道一1 小时前
路由 下一跳 网关 两个不同网段的ip如何通过路由器互通
网络
189228048611 小时前
NW622NW623美光固态闪存NW624NW635
大数据·网络·数据库·人工智能·microsoft·性能优化
云飞云共享云桌面1 小时前
1台电脑10个画图设计用怎么实现
linux·运维·服务器·网络·数据库·自动化·电脑
心 一2 小时前
Web安全基石:深入理解与防御越权问题
网络·安全·web安全
久绊A3 小时前
WhatWeb-网站安全扫描指纹识别
网络·whatweb·kail