nginx stream模块初探
来源:互联网 发布:如何淘宝买东西 编辑:程序博客网 时间:2024/05/18 15:51
前言
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_versionnginx 版本$pidworker进程号$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_iso8601ISO 8601时间格式$time_local普通日志格式的时间戳
stream 模块
目前官网上列出的第三方模块、简直就是http模块的镜像、比如access模块访问控制ip和ip段,map模块实现映射、 geo模块实现地理位置映射、等等。使用这些模块的时候一定要看是哪个版本才支持的、比如log模块,只有在nginx-1.11.4才支持。
ngx_stream_core_modulengx_stream_access_modulengx_stream_geo_modulengx_stream_geoip_modulengx_stream_js_modulengx_stream_limit_conn_modulengx_stream_log_modulengx_stream_map_modulengx_stream_proxy_modulengx_stream_realip_modulengx_stream_return_modulengx_stream_split_clients_modulengx_stream_ssl_modulengx_stream_ssl_preread_modulengx_stream_upstream_modulengx_stream_upstream_hc_module
0 0
- nginx stream模块初探
- Nginx模块编写初探
- Nginx限速模块初探
- Nginx TCP代理及负载均衡stream模块简介
- Nginx模块开发(1)-初探模块开发流程
- PHP Stream API初探
- spark stream初探
- Java8 Stream 初探(一)
- Java Stream初探(二)
- 初探Nginx
- nginx初探
- Nginx初探
- Nginx初探
- Nginx初探
- Nginx初探
- Nginx初探
- Nginx初探
- Nginx初探
- heatmap.js调用百度地图api做热力图
- Java8新特性接口的增强之default方法
- 表单处理的方案与注意事项(servlet)
- c语言-函数(1)
- java--jspsmartupload组件抛出异常总结
- nginx stream模块初探
- ScrollView下,ListView重复调用getview解决方案
- Ubuntu 16.04 安装 ownCloud
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15) C
- Java之反射代码演示说明
- this指针用法
- 通过信号实现在应用层检测TF卡的拔插
- Java对数据库的增删查改
- c笔记---scanf()