模块 ngx_stream_proxy_module
模块 (1.9.0) 允许代理
通过 TCP、UDP (1.9.13) 和 UNIX 域套接字的数据流。ngx_stream_proxy_module
示例配置
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 中。
使与代理服务器的传出连接产生
从指定的本地 IP 。
参数值可以包含变量 (1.11.2)。
特殊值取消效果
Directives
继承自之前的配置级别,这允许
system 自动分配本地 IP 地址。address
off
proxy_bind
参数 (1.11.0) 允许
到代理服务器的传出连接源自
来自非本地 IP 地址,
例如,从客户端的真实 IP 地址:transparent
proxy_bind $remote_addr transparent;
为了使此参数起作用,
通常需要使用超级用户权限运行 nginx 工作进程。
在 Linux 上,它不是必需的 (1.13.8),就像
参数为 Worker processes
从 master 进程继承能力。
还需要配置内核路由表
拦截来自代理服务器的网络流量。transparent
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 中。
限制从代理服务器读取数据的速度。
以每秒字节数为单位指定。
零值将禁用速率限制。
限制是按连接设置的,因此如果 nginx 同时打开
与代理服务器的两个连接,
总速率将是指定限制的两倍。rate
参数值可以包含变量 (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 |
限制允许将连接传递到下一个服务器的时间。
该值会关闭此限制。0
语法: |
proxy_next_upstream_tries |
---|---|
默认值: |
proxy_next_upstream_tries 0; |
上下文: |
stream ,server |
限制将连接传递到下一个服务器的可能尝试次数。
该值会关闭此限制。0
语法: |
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 |
该Directives出现在版本 1.15.8 中。
允许终止与代理服务器的所有会话
从组中删除或标记为永久不可用之后。
这可能是由于重新解析或使用 API DELETE
命令而发生的。
如果服务器被视为运行状况不佳或使用 API PATCH
命令,则可以将其标记为永久不可用。
每个会话在下一个
为 Client 端或代理服务器处理 read 或 write 事件。
该Directives作为我们商业订阅的一部分提供。
语法: |
proxy_socket_keepalive |
---|---|
默认值: |
proxy_socket_keepalive off; |
上下文: |
stream ,server |
该Directives出现在版本 1.15.6 中。
配置 “TCP keepalive” 行为
用于到代理服务器的传出连接。
默认情况下,作系统的设置对套接字有效。
如果Directives设置为值 “”,则为套接字打开套接字选项。on
SO_KEEPALIVE
语法: |
proxy_ssl |
---|---|
默认值: |
proxy_ssl off; |
上下文: |
stream ,server |
启用 SSL/TLS 协议以连接到代理服务器。
语法: |
proxy_ssl_certificate |
---|---|
默认值: | — |
上下文: |
stream ,server |
指定 a 和 PEM 格式的证书
用于对代理服务器的身份验证。file
从 1.21.0 版本开始,可以在名称中使用变量。file
语法: |
proxy_ssl_certificate_key |
---|---|
默认值: | — |
上下文: |
stream ,server |
使用 PEM 格式的密钥指定 a
用于对代理服务器的身份验证。file
从 1.21.0 版本开始,可以在名称中使用变量。file
语法: |
proxy_ssl_ciphers |
---|---|
默认值: |
proxy_ssl_ciphers DEFAULT; |
上下文: |
stream ,server |
指定为连接到代理服务器的启用密码。 密码以 OpenSSL 库理解的格式指定。
完整列表可使用
“” 命令。openssl ciphers
语法: |
proxy_ssl_conf_command |
---|---|
默认值: | — |
上下文: |
stream ,server |
该Directives出现在版本 1.19.4 中。
在与代理服务器建立连接时设置任意 OpenSSL 配置命令。
使用 OpenSSL 1.0.2 或更高版本时,支持该Directives。
多个Directives
可以在同一级别上指定。
这些Directives继承自之前的配置级别
当且仅当存在
无Directives
在当前级别上定义。proxy_ssl_conf_command
proxy_ssl_conf_command
请注意,直接配置 OpenSSL 可能会导致意外行为。
语法: |
proxy_ssl_crl |
---|---|
默认值: | — |
上下文: |
stream ,server |
指定具有已吊销证书 (CRL) 的
以 PEM 格式用于验证代理服务器的证书。file
语法: |
proxy_ssl_key_log path; |
---|---|
默认值: | — |
上下文: |
stream ,server |
该Directives出现在版本 1.27.2 中。
启用代理服务器连接 SSL 密钥的日志记录 并指定密钥日志文件的路径。 密钥以与 Wireshark 兼容的 SSLKEYLOGFILE 格式记录。
该Directives作为我们商业订阅的一部分提供。
语法: |
proxy_ssl_name |
---|---|
默认值: |
proxy_ssl_name host from proxy_pass; |
上下文: |
stream ,server |
允许覆盖用于验证代理服务器证书的服务器名称,并在与代理服务器建立连接时通过 SNI 传递。 也可以使用变量 (1.11.3) 指定服务器名称。
默认情况下,使用 proxy_pass 地址的 host 部分。
语法: |
proxy_ssl_password_file |
---|---|
默认值: | — |
上下文: |
stream ,server |
指定 a with passphrases for secret keys,其中每个密码都在单独的行上指定。
加载密钥时依次尝试密码。file
语法: |
proxy_ssl_protocols
[ |
---|---|
默认值: |
proxy_ssl_protocols TLSv1.2 TLSv1.3; |
上下文: |
stream ,server |
为连接到代理服务器的连接启用指定的协议。
默认情况下使用该参数
从 1.23.4 开始。TLSv1.3
语法: |
proxy_ssl_server_name |
---|---|
默认值: |
proxy_ssl_server_name off; |
上下文: |
stream ,server |
启用或禁用通过 TLS 传递服务器名称 服务器名称指示扩展 (SNI、RFC 6066) 与 Proxied 服务器建立连接时。
语法: |
proxy_ssl_session_reuse |
---|---|
默认值: |
proxy_ssl_session_reuse on; |
上下文: |
stream ,server |
确定在使用
代理服务器。
如果错误
“”
,请尝试禁用会话重用。SSL3_GET_FINISHED:digest check failed
语法: |
proxy_ssl_trusted_certificate |
---|---|
默认值: | — |
上下文: |
stream ,server |
指定具有 PEM 格式的受信任 CA 证书
用于验证代理服务器的证书。file
语法: |
proxy_ssl_verify |
---|---|
默认值: |
proxy_ssl_verify off; |
上下文: |
stream ,server |
启用或禁用对代理服务器证书的验证。
语法: |
proxy_ssl_verify_depth |
---|---|
默认值: |
proxy_ssl_verify_depth 1; |
上下文: |
stream ,server |
设置代理服务器证书链中的验证深度。
语法: |
proxy_timeout |
---|---|
默认值: |
proxy_timeout 10m; |
上下文: |
stream ,server |
设置两个连续的
对客户端或代理服务器连接执行读取或写入作。
如果在此时间内未传输任何数据,则连接将关闭。timeout
语法: |
proxy_upload_rate |
---|---|
默认值: |
proxy_upload_rate 0; |
上下文: |
stream ,server |
该Directives出现在版本 1.9.3 中。
限制从客户端读取数据的速度。
以每秒字节数为单位指定。
零值将禁用速率限制。
限制是按连接设置的,因此如果客户端同时打开
两个连接,
总速率将是指定限制的两倍。rate
参数值可以包含变量 (1.17.0)。 在应限制速率的情况下,它可能很有用 取决于特定条件:
map $slow $rate { 1 4k; 2 8k; } proxy_upload_rate $rate;