Вероятно, дубликат этот вопрос, но у него нет ответа, и я попробовал там предложение, но не смог заставить его работать. Мне нужно авторизовать каждый запрос перед его проксированием, и я пытаюсь сделать это с помощью файла cookie, но значение файла cookie не устанавливается ни для каких последующих запросов. Большинство мест в Интернете рекомендуют что-то вроде следующего
server {
auth_request /auth;
location /auth {
internal;
proxy_pass http://auth:8080/auth;
auth_request_set $saved_set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $saved_set_cookie;
}
}
Но, похоже, это не работает. Я пытался даже использовать собственный заголовок, чтобы увидеть, вижу ли я его, как упоминалось в вопросе выше, и это не работает.
server {
auth_request /auth;
location /auth {
internal;
proxy_pass http://auth:8080/auth;
auth_request_set $saved_set_cookie $upstream_http_set_cookie;
add_header X-COOKIE-TEST $saved_set_cookie;
}
}
Если я перейду на сервер аутентификации напрямую, я увижу, что cookie установлен





Нашел рабочее решение на https://github.com/nginxinc/NGINX-Demos/blob/331fd357e6e1813b5d41aed48880cf274d31dcee/oauth2-token-introspection-oss/frontend.conf#L29, и оно очень простое (Nginx 1.18.0):
location / {
auth_request /authz;
auth_request_set $new_cookie $sent_http_set_cookie; # use sent_http_*, not upstream_http_*
add_header Set-Cookie $new_cookie;
add_header X-Test $sent_http_set_cookie; # it's even working directly
}