我有一个python程序,它使用request.client.host头和Fast获取客户机IP。这个程序运行在库伯内特斯吊舱(Ip)上.我使用KrakenD实现了另一个Gateway,它运行在kubernetes集群中的另一个pod上。Kubernetes yaml文件( ip-pod和KrakenD)都具有externalTrafficPolicy: Local属性,我无法检索用户的真实IP,这可能是因为KrakenD不允许真正的IP到达ip-pod。我已经测试了这个程序,通过使用type: LoadBalancer将IP暴露到互联网上,这样它就给出了正确的客户端IP。但是当我使用KrakenD网关时,IP是不同的(私有IP)。
发布于 2021-10-06 13:58:58
您可以在krakenD中使用no,它会将请求转发到后端。
https://www.krakend.io/docs/endpoints/no-op/
您还可以在YAML of KrakenD中检查参数转发配置。
"headers_to_pass":[
"*"
]如果您在报头中获取客户端IP,KrakenD将将其转发到后端。
参照系
{
"endpoint": "/api/v1/{uid}/user",
"method": "GET",
"headers_to_pass": [ "*" ],
"querystring_params": [ "*" ],
"output_encoding": "no-op",
"concurrent_calls": 1,
"backend": [
{
"url_pattern": "/api/{uid}/user",
"encoding": "no-op",
"host": [
"http://IP:Port"
]
}
]
}https://stackoverflow.com/questions/69466985
复制相似问题