模块 ngx_stream_proxy_module
这ngx_stream_proxy_modulemodule (1.9.0) 允许代理
通过 TCP、UDP (1.9.13) 和 UNIX 域套接字的数据流。
示例配置
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
Directives
| 语法: |
proxy_bind
|
|---|---|
| 默认值: | — |
| 上下文: |
stream,server |
该Directives出现在版本 1.9.2 中。
使与代理服务器的传出连接产生
从指定的本地 IPaddress.
参数值可以包含变量 (1.11.2)。
特殊值off取消效果
的proxy_bind命令
继承自之前的配置级别,这允许
system 自动分配本地 IP 地址。
这transparentparameter (1.11.0) 允许
到代理服务器的传出连接源自
来自非本地 IP 地址,
例如,从客户端的真实 IP 地址:
proxy_bind $remote_addr transparent;
为了使此参数起作用,
通常需要使用超级用户权限运行 nginx 工作进程。
在 Linux 上,它不是必需的 (1.13.8),就像
这transparentparameter 时,工作进程
继承CAP_NET_RAW功能。
还需要配置内核路由表
拦截来自代理服务器的网络流量。
| 语法: |
proxy_buffer_size |
|---|---|
| 默认值: |
proxy_buffer_size 16k; |
| 上下文: |
stream,server |
该Directives出现在版本 1.9.4 中。
设置size用于读取数据的缓冲区
从代理服务器。
此外,还将size用于读取数据的缓冲区
从客户端。
| 语法: |
proxy_connect_timeout |
|---|---|
| 默认值: |
proxy_connect_timeout 60s; |
| 上下文: |
stream,server |
定义与代理服务器建立连接的超时。
| 语法: |
proxy_download_rate |
|---|---|
| 默认值: |
proxy_download_rate 0; |
| 上下文: |
stream,server |
该Directives出现在版本 1.9.3 中。
限制从代理服务器读取数据的速度。
这rate以每秒字节数为单位指定。
零值将禁用速率限制。
限制是按连接设置的,因此如果 nginx 同时打开
与代理服务器的两个连接,
总速率将是指定限制的两倍。
参数值可以包含变量 (1.17.0)。 在应限制速率的情况下,它可能很有用 取决于特定条件:
map $slow $rate {
1 4k;
2 8k;
}
proxy_download_rate $rate;
| 语法: |
proxy_half_close |
|---|---|
| 默认值: |
proxy_half_close off; |
| 上下文: |
stream,server |
该Directives出现在版本 1.21.4 中。
启用或禁用关闭 TCP 连接的每个方向独立(“TCP 半合”)。 如果启用,将保留 TCP 代理 直到双方都关闭连接。
| 语法: |
proxy_next_upstream |
|---|---|
| 默认值: |
proxy_next_upstream on; |
| 上下文: |
stream,server |
当无法建立与代理服务器的连接时,确定 客户端连接是否将传递到下一个服务器。
| 语法: |
proxy_next_upstream_timeout |
|---|---|
| 默认值: |
proxy_next_upstream_timeout 0; |
| 上下文: |
stream,server |
限制允许将连接传递到下一个服务器的时间。
这0value 关闭此限制。
| 语法: |
proxy_next_upstream_tries |
|---|---|
| 默认值: |
proxy_next_upstream_tries 0; |
| 上下文: |
stream,server |
限制将连接传递到下一个服务器的可能尝试次数。
这0value 关闭此限制。
| 语法: |
proxy_pass |
|---|---|
| 默认值: | — |
| 上下文: |
server |
设置代理服务器的地址。 地址可以指定为域名或 IP 地址, 和一个端口:
proxy_pass localhost:12345;
或作为 UNIX 域套接字路径:
proxy_pass unix:/tmp/stream.socket;
如果一个域名解析为多个地址,则所有地址都将是 以循环方式使用。 此外,还可以将地址指定为服务器组。
也可以使用变量 (1.11.3) 指定地址:
proxy_pass $upstream;
在这种情况下,将在描述的服务器组中搜索服务器名称。 如果未找到,则使用解析程序确定。
| 语法: |
proxy_protocol |
|---|---|
| 默认值: |
proxy_protocol off; |
| 上下文: |
stream,server |
该Directives出现在版本 1.9.2 中。
启用 PROXY 协议连接到代理服务器。
| 语法: |
proxy_requests |
|---|---|
| 默认值: |
proxy_requests 0; |
| 上下文: |
stream,server |
该Directives出现在版本 1.15.7 中。
设置客户端数据报的数量 客户端与现有 UDP 流会话之间的绑定将被丢弃。 收到指定数量的数据报后,下一个数据报 从同一客户端启动新会话。 当传输所有客户端数据报时,会话终止 发送到代理服务器,并收到预期数量的响应, 或者当它达到超时时。
| 语法: |
proxy_responses |
|---|---|
| 默认值: | — |
| 上下文: |
stream,server |
该Directives出现在版本 1.9.13 中。
设置预期来自代理服务器的数据报数 响应客户端数据报 如果使用 UDP 协议。 该数字用作会话终止的提示。 默认情况下,数据报的数量没有限制。
如果指定了零值,则不需要响应。 但是,如果收到响应并且 session still not finished,则将处理响应。
| 语法: |
proxy_session_drop |
|---|---|
| 默认值: |
proxy_session_drop off; |
| 上下文: |
stream,server |