Nginx stream模块初探

前言

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;}
}

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
普通日志格式的时间戳

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. Centos 利用yum源安装 nginx stream模块

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

  2. nginx stream模块

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

  3. Nginx限速模块初探

    Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟.我们会通过一些简单的示例展示Nginx限速模块是如何工作 ...

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

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

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

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

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

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

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

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

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

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

  9. 添加nginx中的stream模块

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

最新文章

  1. crontab 备份mysql数据库_crontab定时备份mySQL数据库
  2. 策略路由实验,指定出口
  3. Linux中安装配置hadoop集群
  4. vivado SOC——hello word(上)建立SOC系统
  5. ArcGIS JS API中切换页面后组件报Tried to register widget with id== but that id is already registered
  6. 二进制(bit)整数
  7. exc读入到matlab,matlab外部程序接口-excel
  8. Vue项目中公用footer组件底部位置的适配问题
  9. python中集合set,字典dict和列表list的区别以及用法
  10. E. Anfisa the Monkey
  11. Arbin数据导出---cellpy库的安装与使用
  12. SharePoint 2013创建WCF REST Service
  13. Linux突然断电后文件丢失的问题
  14. 韩顺平 java 坦克大战_韩顺平坦克大战源代码 韩顺平老师视频里的坦克大战 - 下载 - 搜珍网...
  15. nested exception is java.lang.NumberFormatException: For input string: NaN
  16. android TV for x86,“掌上TV”的第一步,Android TV x86 体验分享
  17. java图片压缩、图片缩放
  18. 博云与智领云达成战略合作,携手共研云原生大数据领域
  19. visual assist x太卡了_带你纵横职场的高阶EVO笔记本 华硕灵耀X纵横评测
  20. NOPI 读取EXCEL数据时报错“未将对象引用设置到对象的实例”的变相解决方案

热门文章

  1. 9:01 2009-7-20
  2. 零基础 Amazon Web Services (AWS) 入门教程图文版(三)
  3. PHP如何解决网站大流量与高并发
  4. 关于大型网站技术演进的思考(八)--存储的瓶颈终篇(8)
  5. 防止电子邮件地址被搜索到的新方法
  6. PNG图在IE6下透明的终极解决方案
  7. 博弈——巴什博弈(hdu1846,2188,2897)
  8. 如何区分iptables的PREROUTING和POSTROUTING链
  9. Python——集合字典解析的对象无序和无副本特性
  10. LeetCode 121. Best Time to Buy and Sell Stock