我需要这个位置块路由到两个不同的后端端点
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。