Nginx之数据流代理stream模块简介和使用 ---九五小庞
一、stream模块简介
stream模块一般用于TCP/UDP数据流的代理和负载均衡,通过stream模块我们可以代理转发tcp报文。ngx_stream_core_module模块从1.9.0版开始提供。默认情况下,此模块不是构建的,应该使用–with stream配置参数启用它,即我们需要使用./configure --with-stream的方式在编译的时候将stream模块添加进去。stream模块用法和http模块差不多,语法也基本相同。
二、使用场景说明
stream主要有两个可用场景。一是实现流量的代理转发,这里所说的代理转发是只某些端口服务是有源IP地址限制的,例如mysql账户一般是限制了源地址为应用服务器,nginx可能同时是WEB应用服务器,开发人员需要验证一些数据库数据问题,但是账户源地址有限制,此时通过nginx进行数据流转发就可以实现开发终端到mysql的访问。二是实现流量的负载均衡,我们有多个tcp或者udp端口服务(比如DNS),通过stream模块我们可以实现数据流的负载均衡,支持负载均衡算法包括轮询、最小连接数、ip_hash等。
三、配置示例
0、stream块配置
stream块配置与http块并列,在nginx.conf中配置,可以用include方式将我们配置实例单独配置,方便管理。
stream {
log_format proxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/tcp-access.log proxy ;
open_log_file_cache off;
include /etc/nginx/conf.d/*.stream;
}
1、tcp端口数据流代理
#cat tcp_3306.stream
############################################################################
### 这是一个tcp 3306端口代理的配置示例
############################################################################
server {
listen 3306; #需要监听的端口
proxy_connect_timeout 5s;
proxy_timeout 30s;
proxy_pass 192.168.10.151:3306; #需要代理的端口
}
2、负载均衡配置
#cat load_udp_53.stream
############################################################################
### 这是一个udp 53端口负载均衡的配置示例
############################################################################
upstream mydns {
hash $remote_addr consistent; #配置ip_hash方式,默认轮询
server 192.168.10.10:53; #这里配置成要访问的地址和端口
server 192.168.10.20:53;
server 192.168.10.30:53;
}
server {
listen 53 udp reuseport; #需要监听的端口,因为udp非可靠传输协议,使用reuseport保证请求分配到统一会话中
proxy_connect_timeout 5s;
proxy_timeout 20s;
proxy_pass mydns;
}
Nginx之数据流代理stream模块简介和使用 ---九五小庞的更多相关文章
- 什么是Nginx -九五小庞
- Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理
通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至 ...
- Linux安装Nginx安装并配置stream
编译安装 1.下载可编译的nginx cd /opt wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.20.1 ...
- Nodejs stream模块-翻译
花了两天时间尝试按照自己的话翻译了一下stream模块,以下内容皆翻译于:https://nodejs.org/api/stream.html. 目录 1 Stream(流) 1.1 ...
- nginx : TCP代理和负载均衡的stream模块
一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy. 这算是一个nginx比较明显的缺憾.不过,在1.90发布后这个认知将 ...
- 编译nginx平滑添加stream模块
1.操作背景 操作系统版本:CentOS Linux release (Core) nginx版本:1.13.4 nginx从1.9.0版本开始,新增了ngx_stream_core_module模块 ...
- nginx的stream模块和upstream模块
nginx7层调度方式 使用upstream模块定义集群名称和节点地址 定义在server字段之外httpd字段之内 upstream staticweb { server 172.17.0.2; # ...
- 附002.Nginx代理相关模块解析
一 ngx_http_proxy_module模块 1.1 proxy_pass配置 proxy_pass URL; Context: location, if in location, limit_ ...
- Nginx 反向代理工作原理简介与配置详解
Nginx反向代理工作原理简介与配置详解 by:授客 QQ:1033553122 测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...
- 内网Linux下安装Nginx1.23,添加stream模块实现tcp/udp代理转发
环境:centos7.6 ngx_stream_core_module 这个模块在1.9.0版本后将被启用.但是并不会默认安装,需要在编译时通过指定 --with-stream 参数来激活这个模块,w ...
随机推荐
- Java:一篇学好设计模式
什么是设计模式 简单理解,设计模式是前人多年写代码踩坑总结出来的优秀代码攻略,目的是减少大量无用代码,让项目更好维护 七大设计原则 接下来要讲的23种设计模式,但遵循下面的七大原则: 单一职责原则 2 ...
- vue自定义组件——split-pane
pre { overflow-y: auto; max-height: 500px } github地址: https://github.com/lxmghct/my-vue-components 组 ...
- Sql批量替换字段字符,Sql批量替换多字段字符,Sql替换字符
update phome_ecms_news_check set filename= replace(filename,'Under4-',''); update phome_ecms_news_ch ...
- Go语言实现协程下载器
一般常用的下载方式是通过浏览器访问URL,然后基于HTTP进行下载.这种单线程下载方式通常比较慢,这里尝试使用Go语言实现一个多协程的下载器. 大致思路 按照传统的单线程的思路,实现下载要基于HTTP ...
- Java中方法的定义及注意事项
一.方法 什么是方法: 方法(method)是程序中最小的执行单元 实际开发中,什么时候用到方法: 重复的代码.具有独立功能的代码可以抽取到方法中 实际开发中,方法有什么好处: 可以提高代码的复用性 ...
- 深度学习--全连接层、高阶应用、GPU加速
深度学习--全连接层.高阶应用.GPU加速 MSE均方差 Cross Entropy Loss:交叉熵损失 Entropy 熵: 1948年,香农将统计物理中熵的概念,引申到信道通信的过程中,从而开创 ...
- 数据库mysql8.0安装+Navicat12
第一次写博客,准备坚持下去把每天学习到的东西记录下来,刚好安装mysql8.0过程中遇到了一些问题并解决,系统win10.致敬博客 首先先粘贴一段mysql的百度百科词条:MySQL是一个关系型数据库 ...
- ERROR: libfdk_aac not found和ERROR: libmp3lame >= 3.98.3 not dound
ERROR: libfdk_aac not found和ERROR: libmp3lame >= 3.98.3 not dound 编译ffmepg时出现这两个错误或者有时候需要x264编码的时 ...
- 数据分析05-matplotlib基本绘图、高级绘图
数据分析-05 数据分析-05 matplotlib基本功能详解 基本绘图 1)绘图核心API 2)设置线型.线宽 3)设置坐标轴范围 4)设置坐标刻度 5)设置坐标轴 6)图例 7)特殊点 8)备注 ...
- 数据结构哈夫曼树(C语言版)
文章目录 一. 问题 需求分析 代码分析 结构体定义使用 建立哈夫曼树,首先需要找到两个权值最小的两个叶子结点,然后建树 哈夫曼编码(我采用的是从叶子结点-->根节点,所以实际是反过来的) 使用 ...