前言

nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。这完全就是抢HAproxy份额的节奏,鉴于nginx在7层负载均衡和web service上的成功,和nginx良好的框架,stream模块前景一片光明。

stream 模块编译

stream模块默认没有编译到nginx, 编译nginx时候 ./configure –with-stream 即可

官网:http://nginx.org/en/docs/stream/ngx_stream_core_module.html

用法

stream模块用法和http模块差不多,关键的是语法几乎一致。熟悉http模块配置语法的上手更快 
以下是一个配置了tcp负载均衡和udp(dns)负载均衡的例子, 有 server,upstream块,而且还有server, 
hash, listen, proxy_pass等指令,如果不看最外层的stream关键字,还以为是http模块呢。

worker_processes auto;
error_log logs/error.stream.log info;
events {worker_connections  1024;
}
stream {upstream backend {hash $remote_addr consistent;server 127.0.0.1:12346 weight=5;server 127.0.0.1:12347            max_fails=3 fail_timeout=30s;server 127.0.0.1:12348            max_fails=3 fail_timeout=30s;}upstream dns {server 17.61.29.79:53;server 17.61.29.80:53;server 17.61.29.81:53;server 17.61.29.82:53;}server {listen 12345;proxy_connect_timeout 1s;proxy_timeout 3s;proxy_pass backend;}server {listen 127.0.0.1:53 udp;proxy_responses 1;proxy_timeout 20s;proxy_pass dns;}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

stream core 一些变量

注意:变量支持是从 nginx 1.11.2版本开始的

$binary_remote_addr
二进制格式的客户端地址
$bytes_received
从客户端接收到的字节数
$bytes_sent
发往客户端的字节数
$hostname
连接域名
$msec
毫秒精度的当前时间
$nginx_version
nginx 版本
$pid
worker进程号
$protocol
通信协议(UDP or TCP)
$remote_addr
客户端ip
$remote_port
客户端端口
$server_addr
接受连接的服务器ip,计算此变量需要一次系统调用。所以避免系统调用,在listen指令里必须指定具体的服务器地址并且使用参数bind。
$server_port
接受连接的服务器端口
$session_time
毫秒精度的会话时间(版本1.11.4开始)
$status
会话状态(版本1.11.4开始), 可以是一下几个值:
200
成功
400
不能正常解析客户端数据
403
禁止访问
500
服务器内部错误
502
网关错误,比如上游服务器无法连接
503
服务不可用,比如由于限制连接等措施导致
$time_iso8601
ISO 8601时间格式
$time_local
普通日志格式的时间戳
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

stream 模块

目前官网上列出的第三方模块、简直就是http模块的镜像、比如access模块访问控制ip和ip段,map模块实现映射、 geo模块实现地理位置映射、等等。使用这些模块的时候一定要看是哪个版本才支持的、比如log模块,只有在nginx-1.11.4才支持。

ngx_stream_core_module
ngx_stream_access_module
ngx_stream_geo_module
ngx_stream_geoip_module
ngx_stream_js_module
ngx_stream_limit_conn_module
ngx_stream_log_module
ngx_stream_map_module
ngx_stream_proxy_module
ngx_stream_realip_module
ngx_stream_return_module
ngx_stream_split_clients_module
ngx_stream_ssl_module
ngx_stream_ssl_preread_module
ngx_stream_upstream_module
ngx_stream_upstream_hc_module

nginx stream模块相关推荐

  1. Nginx stream模块初探

    Nginx stream模块初探 前言 nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发.代理或者负载均衡等.这完全就是抢HAproxy份额的节奏,鉴于nginx在7层 ...

  2. Centos 利用yum源安装 nginx stream模块

    环境 CentOS 7.9 (腾讯云服务器) nginx 1.20.1 配置stream参考这里. nginx 动态模块 nginx 1.9.11 开始增加加载动态模块支持,从此不再需要替换nginx ...

  3. 利用nginx的stream模块实现内网端口的转发代理

    nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发.代理或者负载均衡等.比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx ...

  4. linux nginx 安装stream,Centos7下Nginx简单搭建与stream模块简单配置

    一:Nginx安装 搭建环境:Centos 7 需要软件包:openssl.zlib.pcre.nginx (软件包下载地址个人网盘可能会失效:https://pan.baidu.com/s/1qYN ...

  5. udp发包工具_利用nginx的第四层协议stream模块实现UDP端口的负载均衡

    1.服务  Nginx1.9以上版本  UDP 服务 1:8011  UDP 服务 2:8012 2.Nginx 配置  编译安装参数:--with-stream  stream 模块主要配 ...

  6. Nginx使用stream模块分流实现端口复用

    使用Nginx复用端口有很多方法,最普遍的方法是在不同的server块中监听同一端口,根据不同的主机名完成分流.本文介绍了一种较新的端口复用方法,它可以方便地对TLS加密的TCP数据进行分流. 1 N ...

  7. Nginx服务使用stream模块TCP代理rtmp视频流

    搭建环境 centos7.5,nginx-1.12.1 注释 nginx版本建议为1.9版本以上(nginx从1.9.0开始,新增加了一个stream模块,可以使用这个模块) 1.9版本以下nginx ...

  8. 添加nginx中的stream模块

    注: 1.nginx从1.9.0开始,新增加了一个stream模块,所以本文适用于1.9.0版本以上的nginx. 2.没有特殊标注需要root的用普通nginx用户就可以,比如你在a用户下安装ngi ...

  9. 详解:基于nginx tcp模块基本配置

    2019独角兽企业重金招聘Python工程师标准>>> The ngx_http_upstream_module module is used to define groups of ...

最新文章

  1. Spring for Android 1.0.0发布
  2. android自定义滤镜,【Android】自定义View那点事(三)ColorFilter篇
  3. 下载OpenCV神经网络模型及pycharm中 argparse的参数设置
  4. 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
  5. java 方法体 out 参数_Java方法详解
  6. 《软件测试与质量保证》期末复习重点
  7. k8s 命令 重启_k8s基本命令
  8. php gbk json,GBK的页面输出JSON格式的php函数
  9. openlayers5之view缩放定位
  10. 图书馆占座系统(三)
  11. 易语言大漠插件模块制作设置字库及OcrEx识别字符串
  12. WebClass实现动态WEB编程之实践篇 (转)
  13. 【MAC技巧】 MAC下两款免费的风扇调节工具
  14. openwrt编译教程(第一章)
  15. android遥控杆控件,Android自定义滑杆控件SeekBar多功能版本
  16. page_to_pfn 、virt_to_page、 virt_to_phys、page、页帧pfn、内核虚拟地址、物理内存地址linux内核源码详解
  17. Mysql数据库 | SQL语句解析『下篇』
  18. 大数据惊人:凌晨4点的中国人都在做什么?
  19. 使用素描图像识别人脸
  20. 适合装u盘的linux系统下载软件,ghost xp系统镜像安装win7系统下载地址适合装u盘的linux...

热门文章

  1. 【6.1】图片风格迁移 Neural Style Transfer
  2. [ANSYS APDL] 平面单元应力分析全步骤截图详解
  3. Mybatis(19)注解实现多表查询
  4. 神经网络与深度学习 吴恩达 第一课第四周 习题
  5. 判断是否为IE浏览器(方法一)
  6. layui表单验证 内置自定义规则 - 使用说明
  7. dedeCMS如何进行关键词过滤替换和屏蔽非法词汇?
  8. 图片跟随鼠标移动并放大js特效
  9. centos mysql导出数据库命令_在centos(linux)下用命令导出mysql数据库数据
  10. 一款好看新颖的404页面源码