1

我有 2 个上游,并在 nginx 配置中描述了 cookie 检查的逻辑:

upstream back {
    server backend-release.mynamespace.svc.cluster.local;
 }
upstream back-preprod {
    server backend-preprod.mynamespace.svc.cluster.local;
}

map $http_cookie $back_upstream {
    default back;
    ~*is-preprod=true back-preprod;
}

location ~ ^/(api|graphql) {
    proxy_pass http://$back_upstream;
}
location /rest/ {
    proxy_pass http://$back_upstream/rest/;
}

当我调用 GET http://my-url/api/... 时,它可以工作,但我总是为 GET http://my-url/rest/.. 得到 404

如何解决?

4

1 回答 1

0

我找到了解决方案:

upstream back {
    server backend-release.mynamespace.svc.cluster.local;
}
upstream back-preprod {
    server backend-preprod.mynamespace.svc.cluster.local;
}

map $http_cookie $back_upstream {
    default back;
    ~*is-preprod=true back-preprod;
}

location ~ ^/(api|graphql|rest) {
    proxy_pass http://$back_upstream;
}

location /rest/在这种情况下是不必要的。

于 2021-10-11T21:39:54.847 回答