Nginx 中文文档

current

模块 ngx_http_grpc_module

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

Example Configuration

server {
    listen 9000 http2;

    location / {
        grpc_pass 127.0.0.1:9000;
    }
}

指令

句法:grpc_bind address [transparent ] \| off;
默认:
Context:http , server , location

使用可选的 port 从指定的本地 IP 地址发出到 gRPC 服务器的传出连接。参数 value 可以包含变量。特殊的 value off取消了从前一个 configuration level 继承的grpc_bind指令的效果,它允许系统 auto-assign 本地 IP 地址和 port。

transparent参数允许到 gRPC 服务器的传出连接来自 non-local IP 地址,例如,来自 client 的真实 IP 地址:

grpc_bind $remote_addr transparent;

在 order 中,要使此参数起作用,通常需要使用超级用户权限运行 nginx worker 进程。在 Linux 上,不需要像指定transparent参数那样,worker 进程从 master process 继承CAP_NET_RAW功能。还必须配置内核路由 table 以拦截来自 gRPC 服务器的网络流量。

句法:grpc_buffer_size size;
默认:grpc_buffer_size 4k\|8k;
Context:http , server , location

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

句法:grpc_connect_timeout time;
默认:grpc_connect_timeout 60s;
Context:http , server , location

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

句法:grpc_hide_header field;
默认:
Context:http , server , location

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

句法:grpc_ignore_headers field ...;
默认:
Context:http , server , location

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

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

句法:grpc_intercept_errors on \| off;
默认:grpc_intercept_errors off;
Context:http , server , location

确定代码是否大于或等于 300 的 gRPC 服务器响应是应该传递给 client 还是被拦截并重定向到 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;
Context:http , server , location

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

  • error

  • 与服务器建立连接,向其传递请求或读取响应头时发生错误;

  • timeout

  • 在与服务器建立连接,向其传递请求或读取响应头时发生超时;

  • invalid_header

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

  • http_500

  • 服务器返回 code 500 的响应;

  • http_502

  • 服务器返回带有 code 502 的响应;

  • http_503

  • 服务器返回 code 503 的响应;

  • http_504

  • 服务器返回带有 code 504 的响应;

  • http_403

  • 服务器返回带有 code 403 的响应;

  • http_404

  • 服务器返回带有 code 404 的响应;

  • http_429

  • 服务器返回 code 429 的响应;


non_idempotent

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

  • off

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

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

该指令还定义了与服务器通信的不成功的尝试errortimeoutinvalid_header的情况始终被视为不成功的尝试,即使它们未在指令中指定。只有在指令中指定了http_500http_502http_503http_504http_429的情况才会被视为不成功的尝试。 http_403http_404的情况从未被视为不成功的尝试。

将请求传递给下一个服务器可能受尝试次数时间的限制。

句法:grpc_next_upstream_timeout time;
默认:grpc_next_upstream_timeout 0;
Context:http , server , location

限制 time 期间可以将请求传递给下一个服务器0 value 关闭此限制。

句法:grpc_next_upstream_tries number;
默认:grpc_next_upstream_tries 0;
Context:http , server , location

限制将请求传递给下一个服务器的可能尝试次数。 0 value 关闭此限制。

句法:grpc_pass address;
默认:
Context:location , if in location

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

grpc_pass localhost:9000;

或者作为 UNIX-domain socket 路径:

grpc_pass unix:/tmp/grpc.socket;

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

grpc_pass grpc://127.0.0.1:9000;

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

grpc_pass grpcs://127.0.0.1:443;

如果域 name 解析为多个地址,则所有这些地址都将以 round-robin 方式使用。另外,地址可以指定为server group

句法:grpc_pass_header field;
默认:
Context:http , server , location

允许将否则禁用标头字段从 gRPC 服务器传递到 client。

句法:grpc_read_timeout time;
默认:grpc_read_timeout 60s;
Context:http , server , location

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

句法:grpc_send_timeout time;
默认:grpc_send_timeout 60s;
Context:http , server , location

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

句法:grpc_set_header field value;
默认:grpc_set_header Content-Length $content_length;
Context:http , server , location

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

如果头字段的 value 是空的 string,则该字段将不会传递给 gRPC 服务器:

grpc_set_header Accept-Encoding "";

句法:grpc_socket_keepalive on \| off;
默认:grpc_socket_keepalive off;
Context:http , server , location

该指令出现在 version 1.15.6 中。

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

句法:grpc_ssl_certificate file;
默认:
Context:http , server , location

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

句法:grpc_ssl_certificate_key file;
默认:
Context:http , server , location

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

可以指定 value enginenameid而不是file,它从 OpenSSL 引擎name加载带有指定id的 secret key。

句法:grpc_ssl_ciphers ciphers;
默认:grpc_ssl_ciphers DEFAULT;
Context:http , server , location

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

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

句法:grpc_ssl_crl file;
默认:
Context:http , server , location

指定具有 PEM 格式的已撤销证书(CRL)的file,用于校验 gRPC SSL 服务器的证书。

句法:grpc_ssl_name name;
默认:grpc_ssl_name host from grpc_pass;
Context:http , server , location

允许覆盖服务器 name,用于校验 gRPC SSL 服务器的证书,并在与 gRPC SSL 服务器建立连接时为通过 SNI

默认情况下,使用grpc_pass中的 host 部分。

句法:grpc_ssl_password_file file;
默认:
Context:http , server , location

secret 键指定带有密码的file,其中每个密码在单独的 line 上指定。当_加载 key 时,依次尝试密码短语。

句法:grpc_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
默认:grpc_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context:http , server , location

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

句法:grpc_ssl_server_name on \| off;
默认:grpc_ssl_server_name off;
Context:http , server , location

在与 gRPC SSL 服务器建立连接时,启用或禁用通过TLS 服务器 Name 指示扩展名(SNI,RFC 6066)传递服务器 name。

句法:grpc_ssl_session_reuse on \| off;
默认:grpc_ssl_session_reuse on;
Context:http , server , location

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

句法:grpc_ssl_trusted_certificate file;
默认:
Context:http , server , location

指定具有 PEM 格式的可信 CA 证书的file,用于校验 gRPC SSL 服务器的证书。

句法:grpc_ssl_verify on \| off;
默认:grpc_ssl_verify off;
Context:http , server , location

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

句法:grpc_ssl_verify_depth number;
默认:grpc_ssl_verify_depth 1;
Context:http , server , location

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

Updated at: 3 months ago
ngx_http_geoip_moduleTable of contentngx_http_gunzip_module
Comment
You are not logged in.

There are no comments.