根据此处的文档 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/