Zastanawiam się, jak wyraźnie skonfigurować kontrole w jednym miejscu dla każdej lokalizacji. Robienie czegoś takiego jak poniżej, wydaje się, że jest podatny na błędy (brakuje wpisu, literówki, niepotrzebne powielanie itp.)

Nginx.conf

location / {
 auth_request /someAuth;
 auth_request_set $someVar $someOtherVar;
 proxy_pass https://somewhere.com:1234;
 proxy_set_header X-Forwarded-For $remote_addr;
}

location /foo {
 auth_request /someAuth;
 auth_request_set $someVar $someOtherVar;
 proxy_pass https://somewhereElse.com:6578;
 proxy_set_header X-Forwarded-For $remote_addr;
}

location /bar {
 auth_request /someAuth;
 auth_request_set $someVar $someOtherVar;
 proxy_pass https://somewhereOther.com:9876;
 proxy_set_header X-Forwarded-For $remote_addr;
}
0
ekjcfn3902039 14 październik 2020, 18:33

1 odpowiedź

Najlepsza odpowiedź

Może przy użyciu dyrektywy map w taki sposób

map $uri $proxy {
    ~^/foo    https://somewhereElse.com:6578;
    ~^/bar    https://somewhereOther.com:9876;
    default   https://somewhere.com:1234;
}
server {
    ...
    location / {
        auth_request /someAuth;
        auth_request_set $someVar $someOtherVar;
        proxy_pass $proxy;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Należy pamiętać, że taka konfiguracja wymagałaby wymagać resolver dyrektywa.

2
Ivan Shatsky 14 październik 2020, 15:42