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,能访问到说明跳转成功
到此这篇关于nginx实现TCP反向代理的示例代码的文章就介绍到这了,更多相关nginx TCP反向代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Nginx rewrite和proxy_pass的区别及说明
这篇文章主要介绍了Nginx rewrite和proxy_pass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-06-06
Nginx 403 forbidden错误的原因以及解决方法
yum安装nginx,安装一切正常,但是访问时报403 forbidden,下面这篇文章主要给大家介绍了关于Nginx 403 forbidden错误的原因以及解决方法,需要的朋友可以参考下2022-08-08
nginx ingress代理websocket流量的配置方法
ingress nginx默认支持websocket协议,使用长连接协议时需要注意连接超时的设置,文中有提到读取和发送超时的注解参数,通过本文阅读可以快速掌握,对nginx ingress代理websocket相关知识感兴趣的朋友一起看看吧2022-03-03
结合 Nginx 将 DoNetCore 部署到 阿里云的安装配置方法
这篇文章主要介绍了结合 Nginx 将 DoNetCore 部署到 阿里云的方法 ,需要的朋友可以参考下2018-10-10


最新评论