如何解决如何使用子域作为参数/路径将域的自定义子域重定向到单个kubernetes服务?
我有一个多租户应用程序的要求,其中每个租户都应由如下所示的子域分隔
t1.example.com
t2.example.com
t3.example.com
.
.
.
tn.example.com
因此,在这种情况下,可以有任意数量的租户。我有一个名为 myservice 的Kubernetes后端服务,负责处理所有这些请求,因此需要根据其子域进行标识。 例如如果请求来自tn.example.com,则需要将其重定向到-> myservice / tn 。
t2.example.com -> myservice/t2
t3.example.com -> myservice/t3 and so on.
因此,这里的子域名将是重定向期间的path参数,这将从应用程序角度区分不同的子域。我需要为任意数量的子域动态地执行此操作。 在Kubernetes Nginx入口控制器中如何实现呢?
解决方法
恐怕Nginx Ingress不能以简单直接的方式提供您所需要的东西。
但是,您始终可以使用更多高级功能,例如使用configuration snippet through annotation覆盖Server/Location Block
部分,然后使用lua Block提取subdomain
并将请求URI更改为后端。>
Github上有类似的线程,其中用户sanigo
使用configuration-snippet
和lua block
作为解决方法。
nginx.ingress.kubernetes.io/configuration-snippet: |
location ~ ^/v2/ {
set_by_lua_block $repo {
local host = ngx.req.get_headers()["host"];
local reg = "^(?<repo>[^.]+).*";
local m = ngx.re.match(host,reg);
return m['repo'];
}
rewrite ^/(.*)$ /repository/$repo/$1 last;
}
快速笔记:在此示例中,<repo>
的行为与subdomain
完全相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。