ngx_stream_realip_module
ngx_stream_realip_module
模块用于将客户端地址和端口更改为 PROXY 协议头(1.11.4)中发送。必须先在 listen
指令中设置 proxy_protocol 参数才能启用 PROXY 协议。
该模块不是默认构建的,您可以在构建时使用 --with-stream_realip_module
配置参数启用。
示例配置
listen 12345 proxy_protocol;
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
set_real_ip_from 2001:0db8::/32;
指令
set_real_ip_from
- | 说明 |
---|---|
语法 | set_real_ip_from address | CIDR | unix: ; |
默认 | —— |
上下文 | stream、server |
定义已知可发送正确替换地址的受信任地址。如果指定了特殊值 unix:
,则所有 UNIX 域套接字将被信任。
内嵌变量
-
$realip_remote_addr
保留原始客户端地址
-
$realip_remote_port
保留原始的客户端端口
原文档
http://nginx.org/en/docs/stream/ngx_stream_realip_module.html
ngx_stream_return_module
ngx_stream_return_module
模块(1.11.2)允许向客户端发送指定的值,然后关闭连接。
示例配置
server {
listen 12345;
return $time_iso8601;
}
指令
return
- | 说明 |
---|---|
语法 | return value ; |
默认 | —— |
上下文 | server |
指定要发送给客户端的值。该值可以包含文本、变量及其组合。
原文档
http://nginx.org/en/docs/stream/ngx_stream_return_module.html
ngx_stream_split_clients_module
ngx_stream_split_clients_module
模块(1.11.3)创建适用于 A/B 测试的变量,也称为拆分测试。
示例配置
stream {
...
split_clients "${remote_addr}AAA" $upstream {
0.5% feature_test1;
2.0% feature_test2;
* production;
}
server {
...
proxy_pass $upstream;
}
}
指令
split_clients
- | 说明 |
---|---|
语法 | split_clients string $variable { ... } |
默认 | —— |
上下文 | stream |
为 A/B 测试创建一个变量,例如:
split_clients "${remote_addr}AAA" $variant {
0.5% .one;
2.0% .two;
* "";
}
使用 MurmurHash2 对原始字符串的值进行哈希处理。在给出的例子中,从 0 到 21474835 (0.5%)的哈希值对应于 $variant
变量的值 .one
,从 21474836 到 107374180 (2%)的哈希值对应于值 .two
,哈希值从 107374181 到 4294967295 对应于值 ""
(空字符串)。
原文档
http://nginx.org/en/docs/stream/ngx_stream_split_clients_module.html