模块 ngx_stream_proxy_module


proxy_bind
proxy_buffer_size proxy_connect_timeout

proxy_download_rate proxy_half_close

proxy_next_upstream
proxy_next_upstream_timeout
proxy_next_upstream_tries
proxy_pass 的Directives
示例

proxy_protocol proxy_requests
proxy_responses
proxy_session_drop
proxy_socket_keepalive
proxy_ssl proxy_ssl_certificate

proxy_ssl_certificate_key
proxy_ssl_ciphers
proxy_ssl_conf_command

proxy_ssl_crl proxy_ssl_key_log
proxy_ssl_name
proxy_ssl_password_file
proxy_ssl_protocols
proxy_ssl_server_name
proxy_ssl_session_reuse
proxy_ssl_trusted_certificate
proxy_ssl_verify
proxy_ssl_verify_depth

proxy_timeout proxy_upload_rate

模块 (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 address [transparent] | off;
默认值:
上下文: stream,server

该Directives出现在版本 1.9.2 中。

使与代理服务器的传出连接产生 从指定的本地 IP 。 参数值可以包含变量 (1.11.2)。 特殊值取消效果 Directives 继承自之前的配置级别,这允许 system 自动分配本地 IP 地址。addressoffproxy_bind

参数 (1.11.0) 允许 到代理服务器的传出连接源自 来自非本地 IP 地址, 例如,从客户端的真实 IP 地址:transparent

proxy_bind $remote_addr transparent;

为了使此参数起作用, 通常需要使用超级用户权限运行 nginx 工作进程。 在 Linux 上,它不是必需的 (1.13.8),就像 参数为 Worker processes 从 master 进程继承能力。 还需要配置内核路由表 拦截来自代理服务器的网络流量。transparentCAP_NET_RAW

语法: proxy_buffer_size size;
默认值:
proxy_buffer_size 16k;
上下文: stream,server

该Directives出现在版本 1.9.4 中。

设置用于读取数据的缓冲区 从代理服务器。 还设置用于读取数据的缓冲区 从客户端。sizesize

语法: proxy_connect_timeout time;
默认值:
proxy_connect_timeout 60s;
上下文: stream,server

定义与代理服务器建立连接的超时。

语法: proxy_download_rate 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 on | off;
默认值:
proxy_half_close off;
上下文: stream,server

该Directives出现在版本 1.21.4 中。

启用或禁用关闭 TCP 连接的每个方向独立(“TCP 半合”)。 如果启用,将保留 TCP 代理 直到双方都关闭连接。

语法: proxy_next_upstream on | off;
默认值:
proxy_next_upstream on;
上下文: stream,server

当无法建立与代理服务器的连接时,确定 客户端连接是否将传递到下一个服务器。

将连接传递到下一个服务器可能会受到尝试次数时间的限制。

语法: proxy_next_upstream_timeout time;
默认值:
proxy_next_upstream_timeout 0;
上下文: stream,server

限制允许将连接传递到下一个服务器的时间。 该值会关闭此限制。0

语法: proxy_next_upstream_tries number;
默认值:
proxy_next_upstream_tries 0;
上下文: stream,server

限制将连接传递到下一个服务器的可能尝试次数。 该值会关闭此限制。0

语法: proxy_pass address;
默认值:
上下文: server

设置代理服务器的地址。 地址可以指定为域名或 IP 地址, 和一个端口:

proxy_pass localhost:12345;

或作为 UNIX 域套接字路径:

proxy_pass unix:/tmp/stream.socket;

如果一个域名解析为多个地址,则所有地址都将是 以循环方式使用。 此外,还可以将地址指定为服务器组

也可以使用变量 (1.11.3) 指定地址:

proxy_pass $upstream;

在这种情况下,将在描述的服务器组中搜索服务器名称。 如果未找到,则使用解析程序确定。

语法: proxy_protocol on | off;
默认值:
proxy_protocol off;
上下文: stream,server

该Directives出现在版本 1.9.2 中。

启用 PROXY 协议连接到代理服务器。

语法: proxy_requests number;
默认值:
proxy_requests 0;
上下文: stream,server

该Directives出现在版本 1.15.7 中。

设置客户端数据报的数量 客户端与现有 UDP 流会话之间的绑定将被丢弃。 收到指定数量的数据报后,下一个数据报 从同一客户端启动新会话。 当传输所有客户端数据报时,会话终止 发送到代理服务器,并收到预期数量的响应, 或者当它达到超时时。

语法: proxy_responses number;
默认值:
上下文: stream,server

该Directives出现在版本 1.9.13 中。

设置预期来自代理服务器的数据报数 响应客户端数据报 如果使用 UDP 协议。 该数字用作会话终止的提示。 默认情况下,数据报的数量没有限制。

如果指定了零值,则不需要响应。 但是,如果收到响应并且 session still not finished,则将处理响应。

语法: proxy_session_drop on | off;
默认值:
proxy_session_drop off;
上下文: stream,server

该Directives出现在版本 1.15.8 中。

允许终止与代理服务器的所有会话 从组中删除或标记为永久不可用之后。 这可能是由于重新解析或使用 API DELETE 命令而发生的。 如果服务器被视为运行状况不佳或使用 API PATCH 命令,则可以将其标记为永久不可用。 每个会话在下一个 为 Client 端或代理服务器处理 read 或 write 事件。

该Directives作为我们商业订阅的一部分提供。

语法: proxy_socket_keepalive on | off;
默认值:
proxy_socket_keepalive off;
上下文: stream,server

该Directives出现在版本 1.15.6 中。

配置 “TCP keepalive” 行为 用于到代理服务器的传出连接。 默认情况下,作系统的设置对套接字有效。 如果Directives设置为值 “”,则为套接字打开套接字选项。onSO_KEEPALIVE

语法: proxy_ssl on | off;
默认值:
proxy_ssl off;
上下文: stream,server

启用 SSL/TLS 协议以连接到代理服务器。

语法: proxy_ssl_certificate file;
默认值:
上下文: stream,server

指定 a 和 PEM 格式的证书 用于对代理服务器的身份验证。file

从 1.21.0 版本开始,可以在名称中使用变量。file

语法: proxy_ssl_certificate_key file;
默认值:
上下文: stream,server

使用 PEM 格式的密钥指定 a 用于对代理服务器的身份验证。file

从 1.21.0 版本开始,可以在名称中使用变量。file

语法: proxy_ssl_ciphers ciphers;
默认值:
proxy_ssl_ciphers DEFAULT;
上下文: stream,server

指定为连接到代理服务器的启用密码。 密码以 OpenSSL 库理解的格式指定。

完整列表可使用 “” 命令。openssl ciphers

语法: proxy_ssl_conf_command name value;
默认值:
上下文: stream,server

该Directives出现在版本 1.19.4 中。

在与代理服务器建立连接时设置任意 OpenSSL 配置命令

使用 OpenSSL 1.0.2 或更高版本时,支持该Directives。

多个Directives 可以在同一级别上指定。 这些Directives继承自之前的配置级别 当且仅当存在 无Directives 在当前级别上定义。proxy_ssl_conf_commandproxy_ssl_conf_command

请注意,直接配置 OpenSSL 可能会导致意外行为。

语法: proxy_ssl_crl file;
默认值:
上下文: stream,server

指定具有已吊销证书 (CRL) 的 以 PEM 格式用于验证代理服务器的证书。file

语法: proxy_ssl_key_log path;
默认值:
上下文: stream,server

该Directives出现在版本 1.27.2 中。

启用代理服务器连接 SSL 密钥的日志记录 并指定密钥日志文件的路径。 密钥以与 Wireshark 兼容的 SSLKEYLOGFILE 格式记录。

该Directives作为我们商业订阅的一部分提供。

语法: proxy_ssl_name name;
默认值:
proxy_ssl_name host from proxy_pass;
上下文: stream,server

允许覆盖用于验证代理服务器证书的服务器名称,并在与代理服务器建立连接时通过 SNI 传递。 也可以使用变量 (1.11.3) 指定服务器名称。

默认情况下,使用 proxy_pass 地址的 host 部分。

语法: proxy_ssl_password_file file;
默认值:
上下文: stream,server

指定 a with passphrases for secret keys,其中每个密码都在单独的行上指定。 加载密钥时依次尝试密码。file

语法: proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
默认值:
proxy_ssl_protocols TLSv1.2 TLSv1.3;
上下文: stream,server

为连接到代理服务器的连接启用指定的协议。

默认情况下使用该参数 从 1.23.4 开始。TLSv1.3

语法: proxy_ssl_server_name on | off;
默认值:
proxy_ssl_server_name off;
上下文: stream,server

启用或禁用通过 TLS 传递服务器名称 服务器名称指示扩展 (SNI、RFC 6066) 与 Proxied 服务器建立连接时。

语法: proxy_ssl_session_reuse on | off;
默认值:
proxy_ssl_session_reuse on;
上下文: stream,server

确定在使用 代理服务器。 如果错误 “” ,请尝试禁用会话重用。SSL3_GET_FINISHED:digest check failed

语法: proxy_ssl_trusted_certificate file;
默认值:
上下文: stream,server

指定具有 PEM 格式的受信任 CA 证书 用于验证代理服务器的证书。file

语法: proxy_ssl_verify on | off;
默认值:
proxy_ssl_verify off;
上下文: stream,server

启用或禁用对代理服务器证书的验证。

语法: proxy_ssl_verify_depth number;
默认值:
proxy_ssl_verify_depth 1;
上下文: stream,server

设置代理服务器证书链中的验证深度。

语法: proxy_timeout timeout;
默认值:
proxy_timeout 10m;
上下文: stream,server

设置两个连续的 对客户端或代理服务器连接执行读取或写入作。 如果在此时间内未传输任何数据,则连接将关闭。timeout

语法: proxy_upload_rate 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;