如何将域的自定义子域重定向到以子域为参数/路径的单个kubernetes服务?
我有一个多租户应用程序的要求,其中每个租户都应该由子域分隔,如下所示如何将域的自定义子域重定向到以子域为参数/路径的单个kubernetes服务?,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我有一个多租户应用程序的要求,其中每个租户都应该由子域分隔,如下所示 t1.example.com t2.example.com t3.example.com . . . tn.example.com 因此,在这种情况下,可能会有任意数量的租户。我有一个名为myservice的Kubernetes后端服务,负责处理所有这些请求,需要根据它们的子域识别它们。 e、 g.如果请求来自tn.example.com,则需要将其重定向到->myservice/tn t2.exam
t1.example.com
t2.example.com
t3.example.com
.
.
.
tn.example.com
因此,在这种情况下,可能会有任意数量的租户。我有一个名为myservice的Kubernetes后端服务,负责处理所有这些请求,需要根据它们的子域识别它们。
e、 g.如果请求来自tn.example.com,则需要将其重定向到->myservice/tn
t2.example.com -> myservice/t2
t3.example.com -> myservice/t3 and so on.
因此,在这里,子域名将是重定向期间的路径参数,这将从应用程序的角度区分不同的子域。我需要为任意数量的子域动态执行此操作。
如何在Kubernetes Nginx ingress controller中实现这一点?我担心这无法以简单明了的方式提供您所需要的。
但是,您始终可以使用更高级的功能,例如使用覆盖服务器/位置块部分,然后使用提取子域
并将请求URI更改为后端
上有类似的线程,其中用户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;
}
nginx.ingres.kubernetes.io/configuration-snippet:|
地点~^/v2/{
按区块$repo设置{
本地主机=ngx.req.get_headers()[“主机”];
local reg=“^(?[^.]+)*”;
本地m=ngx.re.match(主机,注册);
返回m[‘回购’];
}
重写^/(.*)$/repository/$repo/$1 last;
}
快速提示:在本例中,
完全充当子域
是您的本地环境还是云环境?手动编辑入口YAML的选项不是这里的选项吗?这些子域只会增加或减少?它位于云端,不希望在每次添加新租户时手动编辑入口yaml。子域通常会增加。如果这是一个内部设置,会有什么不同?