nginxstream模块
程序员文章站
2024-01-09 18:20:58
nginxstream模块
nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。这完全就是抢HAproxy份额的节奏,鉴于nginx在7层负...
nginxstream模块
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