根据此处的文档 https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-proto
Envoy 代理在请求中添加了Header X-Forwarded-Proto,由于某些原因header 值错误;它将它设置为 http 尽管传入的请求方案是 https 这会导致我的应用程序代码中出现一些问题,因为它取决于此 header 的正确值。
这是特使中的错误吗?我可以阻止特使这样做吗?

最佳答案

正如我在评论中提到的那样,与 github issue 相关。

有 istio dev @howardjohn comment 关于那个


所以第一个选项是特使过滤器。

在上面的 github 问题中有 2 个答案。
Answer 由@jh-sz 提供

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: xff-trust-hops
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: ingressgateway
  configPatches:
  - applyTo: NETWORK_FILTER
    match:
      context: ANY
      listener:
        filterChain:
          filter:
            name: "envoy.http_connection_manager"
    patch:
      operation: MERGE
      value:
        typed_config:
          "@type": "type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager"
          use_remote_address: true
          xff_num_trusted_hops: 1



Answer 由@vadimi 提供
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: my-app-filter
spec:
  workloadLabels:
    app: my-app
  filters:
  - listenerMatch:
      portNumber: 5120
      listenerType: SIDECAR_INBOUND
    filterName: envoy.lua
    filterType: HTTP
    filterConfig:
      inlineCode: |
        function envoy_on_request(request_handle)
          request_handle:headers():replace("x-forwarded-proto", "https")
        end
        function envoy_on_response(response_handle)
        end

第二个选项是 Alpha api,这个功能正在积极开发中,被认为是 pre-alpha。

关于kubernetes - 有没有办法阻止特使添加特定的标题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63583238/

10-10 04:30