如何在 NGINX 中获取 URL 的子域

How to get subdomain of URL in NGINX

我想根据用户输入的子域进行重定向。

例如:

<subdomain>.example.com/admin -> <subdomain>.myurl.com

理想情况下,我想将 <subdomain> 作为参数传递给我的重定向 URL。

我正在看类似这样的东西:

location ~ (sub).(somewhere).(com)/(some)(thing)/(something)(else) {
  set $var1 = ; # = sub in above example
  set $var2 = ; # = somewhere in above example
  set $var3 = ; # = com in above example
  set $var4 = ; # = some in above example
  set $var5 = ; # = thing in above example
  set $var6 = ; # = something in above example
  set $var7 = ; # = else in above example
  rewrite ^ / last; # would be sub/somewhere
}

基于这里 post:Manipulate or split string(我认为这个例子中变量集的语法是错误的,但你明白了要点)。

URL 的域名部分未通过 location 指令测试。您将需要在 server_name 指令中使用命名捕获。有关详细信息,请参阅 this document

例如:

server {
    server_name ~^(?<name>\w+)\.example\.com$;

    location /admin {
        return 301 $scheme://$name.myurl.com/;
    }
}