为什么 Envoy 使用 X-Forwarded-Proto 而不是 :scheme 或者反过来?

对于几乎所有请求,X-Forwarded-Proto 标头和 :scheme 标头(如果存在)的值将相同。通常用户通过 TLS 连接请求 https:// 资源,并通过明文请求 http:// 资源。但是,用户完全有可能通过 TLS 连接请求 http:// 内容,或者在内部网格中通过明文转发 https:// 请求。在这些情况下,Envoy 将尝试使用 :scheme 标头来引用内容(例如,根据 URL 方案从缓存中提供给定实体),并在执行与底层加密相关的操作时使用 X-Forwarded-Proto 标头(根据请求是否为端口 443 上的 TLS 或端口 80 上的明文,剥离默认端口)。