如何在nginx中获取$ host变量的一部分?

Fro*_*dik 3 nginx

我只需要获取$ host变量的一部分.域名为img1.domain.com和我需要获取"domain.com",然后在重定向中使用它.

我这样做是错的:

$host ~* img[0-9]\.(.*);
set $host_without_img $1;
Run Code Online (Sandbox Code Playgroud)

我知道它会起作用,如果我像这样放入IF条件:

if ($host ~* img[0-9]\.(.*)) {
  set $host_without_img $1;
}
Run Code Online (Sandbox Code Playgroud)

但我不想在没有必要时使用IF.

Rom*_*man 6

你可以使用map,如下所示:

map $host $host_without_img {
    default ...;
    ~*img[0-9]\.(?<x_host_without_img>.*) $x_host_without_img;
}
Run Code Online (Sandbox Code Playgroud)

  • 从链接文档中引用:_Since变量仅在使用时进行评估,即使是大量"map"变量的声明也不会增加任何额外的成本来请求处理._ (2认同)