Nginx 中不同域名的多个 URL 重定向映射

Nginx 中不同域名的多个 URL 重定向映射

我有一个 nginx 实例,为几个网站提供服务。配置的设置方式是/etc/nginx.conf.d包含几个.conf文件/etc/nginx/conf.d,每个网站一个。我相信这是相当标准的。

每个.conf文件都有一个map用于映射 URI 的部分,以及一个server使用 的部分map,如下所示:

map $request_uri $redirect_uri {
  /foo /bar;
}

server {
  ...
  if ($redirect_uri) {
    return 302 $redirect_uri;
  }
  ...
}

我花了一段时间才明白为什么一个网站的别名会使用不同网站的重定向表:因为所有这些都包含在同一范围内,所以每个都map重新定义了$redirect_uri变量!

理想情况下,我希望将每个变量都放在将要使用它map的范围内,但 nginx 会抱怨。我发现的解决方法是为每个映射变量赋予不同的名称,但这是手动的并且容易出错。server"map" directive is not allowed here in <file>

结论:如何将单独的重定向映射保持在将使用它们的服务器范围内?

相关内容