gpt4 book ai didi

kubernetes - 用于代理传递的 URI 中的正则表达式

转载 作者:行者123 更新时间:2023-12-02 12:34:43 25 4
gpt4 key购买 nike

我的 nginx 中有以下配置:

location / {
if ($request_uri ~* ^/checkout/(dev-dist|dist|images|js|libs|resources|angular4-hybrid|bundle.js)) {

proxy_pass http://static-qa-uscentral1.company.com/hybrid/live$request_uri;
break;
}
}

我正在尝试在 istio 的虚拟服务中复制它

我编写了以下虚拟服务来匹配这个正则表达式:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: routes-static
namespace: mui-relqa
spec:
gateways:
- my-gateway
hosts:
- "*"
http:
- match:
- uri:
regex: '^./checkout/(dev-dist|dist|images|js|libs|resources|angular4-hybrid|bundle.js).*$'
redirect:
authority: static-qa-uscentral1.company.com
uri: /hybrid/live

很少有事情我会澄清:
  • 如何使用 nginx 配置中使用的 $request_uri 在虚拟服务中进行复制
  • 使用上述虚拟服务,它会将调用完全重定向到我在“virtualservice”yaml 的“authority”参数中提到的“static-qa-uscentral1.company.com”。如何实现 nginx 在 proxy_pass 期间所做的事情,它不会更改 URL 但仍会获取重定向 URL 的内容。
  • 最佳答案

    您可能会使用 Istio Envoy 过滤器,您可能想检查 Envoy HTTP routing 的其他重写选项.

    你可以看看Katacoda Migrating from NGINX to Envoy Proxy .在 第 4 步 他们展示了 proxy_pass 的示例.

    正则表达式将匹配基于 ECMAscript 样式的正则表达式,您甚至可以查看 Istio Virtual Service source code .

    您需要删除 Istio和设置 NGINX Ingress Controller 相反,或设置 Ingress Controller后面 Istio因此它将基于 nginx.conf 或使用 Nginx Annotations 重定向和/或代理流量.

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    annotations:
    nginx.ingress.kubernetes.io/server-snippet: |
    set $agentflag 0;

    if ($http_user_agent ~* "(Mobile)" ){
    set $agentflag 1;
    }

    if ( $agentflag = 1 ) {
    return 301 https://m.example.com;
    }

    更新

    OP提到了这个,Envoy也支持 Lua scripting这实际上允许在代理中注入(inject)任意代码来处理请求。

    关于kubernetes - 用于代理传递的 URI 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56581304/

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