gRPC C-Core 的代理与绕过变量优先级
追踪 gRPC Core 的代理与绕过优先级,不要假设其他 gRPC 实现使用同一个映射器。
如果已经存在优先级更高的 gRPC 设置,改动 http_proxy 可能毫无作用。先确认实现:以下行为属于 gRPC C-Core 默认的 HTTP 代理映射器及其依赖组件。
该映射器依次检查通道代理参数、grpc_proxy、https_proxy、http_proxy,并在第一个已配置的值处停止。
绕过规则的发现顺序自成一套:no_grpc_proxy 优先于 no_proxy。那里遗留的旧值可以解释为什么某个目标绕开了本来配置好的代理。
该映射器使用 HTTP CONNECT。其文档所述的代理 URI 期望 HTTP 方案;受 TLS 保护的 gRPC 服务本身并不要求受 TLS 保护的代理端点。请单独检查所支持的身份验证,而不要假设任何浏览器登录方案都可用。对于允许公共中间人的公共 gRPC 目标,HTTP 代理列表 可为所选的 HTTP 代理 URI 提供端点候选;请确认能否访问实际的 CONNECT 目标与端口。
Java、Go、JavaScript 或其他语言的 gRPC 实现可能使用不同的传输代码和配置。不要把 C-Core 的变量列表当作适用于所有名为 gRPC 之物的通用规则。
通道失败时,请保留所选的代理、绕过判定、目标以及出错阶段。通过其他客户端能够访问某个 HTTP API,并不能证明该映射器使用了相同设置,也不能证明代理允许所需的 CONNECT 目的地。