模块ngx_http_grpc_module

ngx_http_grpc_module 模块允许将请求传递给gRPC服务器(1.13.10)。该模块需要 ngx_http_v2_module 模块。

示例配置

server {
    listen 9000 http2;

    location / {
        grpc_pass 127.0.0.1:9000;
    }
}

指令

语法:grpc_bind address [transparent ] | off;
默认值:-
上下文:httpserverlocation

使用可选端口从指定的本地IP地址发出到gRPC服务器的传出连接。参数值可以包含变量。特殊值 off 取消了从先前配置级别继承的 grpc_bind 指令的效果,该指令允许系统自动分配本地IP地址和端口。

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

grpc_bind $remote_addr transparent;

为了使此参数起作用,通常需要使用 superuser 权限运行nginx工作进程。在Linux上,不需要指定 transparent 参数,工作进程从主进程继承 CAP_NET_RAW 功能。还需要配置内核路由表以拦截来自gRPC服务器的网络流量。

语法:grpc_buffer_size size;
默认值:grpc_buffer_size 4k|8k;
上下文:httpserverlocation

设置用于读取从gRPC服务器接收的响应的缓冲区的 size 。一旦收到响应,响应就会同步传递给客户端。

语法:grpc_connect_timeout time;
默认值:grpc_connect_timeout 60s;
背景:httpserverlocation

定义与gRPC服务器 Build 连接的超时。应该注意,此超时通常不会超过75秒。

语法:grpc_hide_header field;
默认值:-
背景:httpserverlocation

默认情况下,nginx不会将gRPC服务器响应的头字段“Date”,“Server”和“X-Accel -...”传递给客户端。 grpc_hide_header 指令设置了不会传递的其他字段。相反,如果需要允许传递字段,则可以使用 grpc_pass_header 指令。

语法:grpc_ignore_headers field ...;
默认值:-
上下文:httpserverlocation

禁用从gRPC服务器处理某些响应头字段。可以忽略以下字段:“X-Accel-Redirect”和“X-Accel-Charset”。

如果未禁用,则处理这些标头字段会产生以下影响:

  • “X-Accel-Redirect”对指定的URI执行 internal redirect ;

  • “X-Accel-Charset”设置所需的 charset 响应。

语法:grpc_intercept_errors on | off;
默认值:grpc_intercept_errors off;
上下文:httpserverlocation

确定代码大于或等于300的gRPC服务器响应是应该传递给客户端还是被拦截并重定向到nginx以便使用 error_page 指令进行处理。

语法:grpc_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...;
默认值:grpc_next_upstream error timeout;
上下文:httpserverlocation

指定应将请求传递到下一个服务器的情况:

  • error

    • 与服务器 Build 连接,向其发送请求或读取响应头时发生错误;
  • timeout

    • 与服务器 Build 连接,向其发送请求或读取响应头时发生超时;
  • invalid_header

    • 服务器返回空或无效响应;
  • http_500

    • 服务器返回代码为500的响应;
  • http_502

    • 服务器返回代码为502的响应;
  • http_503

    • 服务器返回代码503的响应;
  • http_504

    • 服务器返回代码504的响应;
  • http_403

    • 服务器返回代码为403的响应;
  • http_404

    • 服务器返回代码为404的响应;
  • http_429

    • 服务器返回代码为429的响应;
  • non_idempotent

    • 通常,如果已向上游服务器发送请求,则使用 non-idempotent 方法( POSTLOCKPATCH )的请求不会传递到下一个服务器;启用此选项显式允许重试此类请求;
  • off

    • 禁用将请求传递给下一个服务器。

应该记住,只有在尚未向客户端发送任何内容的情况下才能将请求传递给下一个服务器。也就是说,如果在传输响应的过程中发生错误或超时,则修复此问题不可能。

该指令还定义了与服务器通信的 unsuccessful attempterrortimeoutinvalid_header 的情况始终被视为不成功的尝试,即使它们未在指令中指定。 http_500http_502http_503http_504http_429 的情况仅在指令中指定时才被视为不成功尝试。 http_403http_404 的案例从未被视为不成功的尝试。

将请求传递到下一个服务器可能受 the number of triestime 的限制。

语法:grpc_next_upstream_timeout time;
默认值:grpc_next_upstream_timeout 0;
背景:httpserverlocation

限制请求可以传递到 next server 的时间。 0 值会关闭此限制。

语法:grpc_next_upstream_tries number;
默认值:grpc_next_upstream_tries 0;
背景:httpserverlocation

限制将请求传递给 next server 的可能尝试次数。 0 值会关闭此限制。

语法:grpc_pass address;
默认值:-
上下文:locationif in location

设置gRPC服务器地址。地址可以指定为域名或IP地址,以及端口:

grpc_pass localhost:9000;

或者作为UNIX域套接字路径:

grpc_pass unix:/tmp/grpc.socket;

或者,可以使用“ grpc:// ”方案:

grpc_pass grpc://127.0.0.1:9000;

要通过SSL使用gRPC,应使用“ grpcs:// ”方案:

grpc_pass grpcs://127.0.0.1:443;

如果域名解析为多个地址,则所有这些地址都将以循环方式使用。此外,地址可以指定为 server group

语法:grpc_pass_header field;
默认值:-
上下文:httpserverlocation

允许将 otherwise disabled 头字段从gRPC服务器传递到客户端。

语法:grpc_read_timeout time;
默认值:grpc_read_timeout 60s;
背景:httpserverlocation

定义从gRPC服务器读取响应的超时。仅在两个连续的读操作之间设置超时,而不是为整个响应的传输。如果gRPC服务器在此时间内未传输任何内容,则关闭连接。

语法:grpc_send_timeout time;
默认值:grpc_send_timeout 60s;
背景:httpserverlocation

设置将请求发送到gRPC服务器的超时。仅在两次连续写入操作之间设置超时,而不是为整个请求的传输。如果gRPC服务器在此时间内未收到任何内容,则关闭连接。

语法:grpc_set_header field value;
默认值:grpc_set_header Content-Length $content_length;
上下文:httpserverlocation

允许将字段重新定义或附加到gRPC服务器的请求标头 passedvalue 可以包含文本,变量及其组合。当且仅当在当前级别上没有定义 grpc_set_header 指令时,这些指令才从前一级继承。

如果标头字段的值为空字符串,则此字段将不会传递给gRPC服务器:

grpc_set_header Accept-Encoding "";
语法:grpc_socket_keepalive on | off;
默认值:grpc_socket_keepalive off;
上下文:httpserverlocation

该指令出现在1.15.6版中。

为gRPC服务器的传出连接配置“TCP keepalive”行为。默认情况下,操作系统的设置对套接字有效。如果指令设置为值“ on ”,则为套接字打开 SO_KEEPALIVE 套接字选项。

语法:grpc_ssl_certificate file;
默认值:-
上下文:httpserverlocation

指定 file ,其中包含用于对gRPC SSL服务器进行身份验证的PEM格式的证书。

语法:grpc_ssl_certificate_key file;
默认值:-
上下文:httpserverlocation

使用PEM格式的密钥指定 file ,用于对gRPC SSL服务器进行身份验证。

可以指定值 enginenameid 而不是 file ,它们加载来自OpenSSL引擎 name 的指定 id 的密钥。

语法:grpc_ssl_ciphers ciphers;
默认值:grpc_ssl_ciphers DEFAULT;
背景:httpserverlocation

指定对gRPC SSL服务器的请求的已启用密码。密码以OpenSSL库理解的格式指定。

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

语法:grpc_ssl_crl file;
默认值:-
背景:httpserverlocation

指定 file ,其中包含PEM格式的已撤销证书(CRL),用于gRPC SSL服务器的证书_1966853。

语法:grpc_ssl_name name;
默认值:grpc_ssl_name host from grpc_pass;
背景:httpserverlocation

允许覆盖用于gRPC SSL服务器证书的服务器名称,并在与gRPC SSL服务器 Build 连接时覆盖 passed through SNI

默认情况下,使用 grpc_pass 中的主机部件。

语法:grpc_ssl_password_file file;
默认值:-
上下文:httpserverlocation

secret keys 指定带有密码的 file ,其中每个密码在单独的行上指定。在加载密钥时依次尝试密码短语。

语法:grpc_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
默认值:grpc_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
背景:httpserverlocation

为gRPC SSL服务器的请求启用指定的协议。

语法:grpc_ssl_server_name on | off;
默认值:grpc_ssl_server_name off;
背景:httpserverlocation

在与gRPC SSL服务器 Build 连接时,启用或禁用通过 TLS Server Name Indication extension (SNI,RFC 6066)传递服务器名称。

语法:grpc_ssl_session_reuse on | off;
默认值:grpc_ssl_session_reuse on;
背景:httpserverlocation

确定在使用gRPC服务器时是否可以重用SSL会话。如果日志中出现错误“ SSL3_GET_FINISHED:digest check failed ”,请尝试禁用会话重用。

语法:grpc_ssl_trusted_certificate file;
默认值:-
背景:httpserverlocation

指定 file ,其中包含PEM格式的可信CA证书,用于gRPC SSL服务器的证书 verify

语法:grpc_ssl_verify on | off;
默认值:grpc_ssl_verify off;
上下文:httpserverlocation

启用或禁用gRPC SSL服务器证书的验证。

语法:grpc_ssl_verify_depth number;
默认值:grpc_ssl_verify_depth 1;
上下文:httpserverlocation

在gRPC SSL服务器证书链中设置验证深度。

ngx_http_geoip_moduleHomengx_http_gunzip_module
empty

还没有评论数据!

您还没有登录!