gpt4 book ai didi

proxy - 根据响应位置 header 重写HTTP请求-Istio

转载 作者:行者123 更新时间:2023-12-02 12:37:09 29 4
gpt4 key购买 nike

说明:

通过virtual_service向上游的Istio(1.0.6)代理发出请求。服务正在响应标题为newuri的httpStatus代码,即307-我知道重定向应该通过设计器与302和位置标题一起工作。但我想基于http错误进行重定向处理。
我尝试将envoyFilters与lua一起使用,但所有功能都与流处理(请求/响应 header mod)有关,而不是重写或请求转发。

因此,请求路径如下所示:

  • 客户端正在发出请求,即curl http://foo/path
  • 代理正在将请求转发到上游
  • 上游正在响应带有new_uri的自定义 header ,即http://blabla/path2作为值
  • 响应代理中的 header 存在时,
  • 对new_uri进行新请求
  • 客户端看到来自new_uri的响应

  • 谢谢

    最佳答案

    如果您有预定义的上游主机列表,则可以考虑查看Envoy Retry plugin。这种机制允许您确定可以与某些特定的重试条件retry_on相关联的Hosts predicates列表:即特定的HTTP错误代码;和重试系列num_retries的数量,因此在重试达到重试编号后,Envoy重试策略将从retry_host_predicate定义的列表中选择下一个主机。

    {
    "retry_on": "...",
    "num_retries": "{...}",
    "per_try_timeout": "{...}",
    "retry_priority": "{...}",
    "retry_host_predicate": [],
    "host_selection_retry_max_attempts": "...",
    "retriable_status_codes": []
    }

    在其他情况下,如果事先不知道重定向主机,则最好找到一种方法,以便在应用程序级别应用适当的逻辑,因为大多数HTTP代理都是以响应处理程序同步执行的方式设计的,例如响应处理程序正在运行,将在同一线程中调度其他任何事情。只要响应处理程序仅处理内存中已存在的数据并且不等待远程服务就可以了。但是,如果您从响应处理程序发出网络请求,则整个线程将被阻塞,并且在远程服务答复之前绝对不会执行任何操作,这将导致性能下降。

    关于proxy - 根据响应位置 header 重写HTTP请求-Istio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54953918/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com