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; } 

但是它只能用于第二次重写

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

 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使用正则expression式来捕获/zones信息之后的stringvariables,然后该variables用于proxy_pass目的地。

第二个位置是一个简单的前缀匹配,它将URLpath原样传递给proxy_pass

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

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

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