【问题标题】:Changing the request URL before request getting matched with the location or server在请求与位置或服务器匹配之前更改请求 URL
【发布时间】:2022-02-08 17:06:17
【问题描述】:

我正在使用带有 nginx-ingress 控制器的 k8s 集群。在请求与服务器和位置匹配之前,我需要在请求 URL 中添加文本。

例如:请求:abc.com/access/endpoint

我有一个入口,其主机为 abc.com,路径为 /access/(*.)。因此,当发出请求时,请求与入口匹配,并按预期将请求定向到服务端点。

但我需要将请求更改为 abc.com/access/newtext/endpoint,然后使其可用于入口。有没有可能做到这一点?

提前感谢

【问题讨论】:

    标签: nginx kubernetes lua kubernetes-ingress nginx-ingress


    【解决方案1】:

    我没试过,但是rewrite注解对你有帮助吗?

    https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#rewrite

    在某些情况下,后端服务中暴露的 URL 与 Ingress 规则中指定的路径不同。如果不进行重写,任何请求都将返回 404。将注释 nginx.ingress.kubernetes.io/rewrite-target 设置为服务预期的路径。

    如果Application Root暴露在不同的路径,需要重定向,设置注解nginx.ingress.kubernetes.io/app-root来重定向/的请求。

    【讨论】:

    • 感谢您的回答,但问题是 URL 重写逻辑有点复杂。它涉及一些处理。所以我们不能硬编码需要一些脚本
    • 那么也许值得使用 apache 服务的入口,在那里进行重写,然后使用您的其他服务作为后端?有点复杂:request -> ingress -> apache -> service,但它应该可以工作,我们在 apache 服务处理一些重定向之前做一些类似的事情,然后将任何剩余的请求卸载到后端服务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2016-09-24
    • 2016-03-19
    • 2020-02-05
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多