nginx 位置服务多个端点

nginx 位置服务多个端点

我需要此位置块来路由到两个不同的后端端点

location ~* /zones/

它必须具有使这些重写成功的逻辑:

/zones/appinfo.axd >>> /zones/appinfo.axd
/zones/api/v2/zones >>> /api/v2/zones

以下是我目前拥有的:

location ~* /zones/ {
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    rewrite ^ /api/v2/zones break;
    proxy_pass http://zone_api;
}

然而它只适用于第二次重写

答案1

我假设你想要这样的东西:

location ~ ^/zones(/api.+)$ {
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    proxy_pass http://zone_api$1;
}

location /zones {
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    proxy_pass http://zone_api;
}

第一个location使用正则表达式捕获部分信息变量后的字符串/zones,然后将该变量用于proxy_pass目标。

第二个位置是简单的前缀匹配,它将 URL 路径按原样传递给proxy_pass

答案2

为每个单独的 URL 使用一个位置和别名。

location /zones/appinfo.axd {
  alias /zones/appinfo.axd;
}
location /zones/api/v2/zones {
  alias /api/v2/zones;
}

请注意,这是针对您指定的确切 URL。您没有包含任何通配符或子文件夹要求,只是包含那些确切的 URL。

相关内容