请求可以进入两个Nginx位置吗?

时间:2016-12-13 13:19:55

标签: nginx

我有一个像这样的Nginx配置:

# match everything except /api/* and /redirected.html
location ~ ^/(?!api|redirected.html).* {
  if ($isFoobar = 1) {
    rewrite ^ /redirected.html redirect;
  }
}

# match everything except /api/*
location ~* ^/(?!api).* {
  if ($http_x_forwarded_proto != "https") {
    rewrite ^(.*)$ https://$server_name$1 permanent;
  }

  passenger_enabled on;
}

我希望任何匹配的请求首先输入位置#1,如果没有重写,请输入第二个位置。

所以,配置应该:

  • /api/*/redirected.html以外的任何内容重定向至/redirected.html ,如果 $isFoobar1
  • 如果/api/*已经https,则将https重定向到SELECT nombre FROM actores WHERE codactor IN ( SELECT actor FROM participacion WHERE (titulo,año) IN (SELECT titulo, año FROM peliculas WHERE director IN ( SELECT coddirector FROM directores d WHERE d.nombre='Alejandro' AND d.apellido='Amenabar'))) INTERSECT SELECT nombre FROM actores WHERE codactor IN ( SELECT actor FROM participacion WHERE (titulo,año) IN (SELECT titulo,año FROM peliculas WHERE director in ( SELECT coddirector from directores p WHERE p.nombre='Pedro' AND p.apellido='Almodobar')));

是否可以使用Nginx或我是否需要重复位置#1中位置#2的规则?

1 个答案:

答案 0 :(得分:0)

所以,我找到的解决方案是使用嵌套位置:

float64

这样,两个规则都基于当前URL应用。