Hello! On Thu, Jan 09, 2020 at 02:53:53AM -0500, andrei_abc wrote:
> у меня есть конфигурация nignx v1.17.6 c oauth2_proxy v4.1.0-12-g7663565 > авторизация проходит через Azure. [...] > location / { > auth_request /oauth2/auth; > error_page 401 = /oauth2/sign_in; > > auth_request_set $user > $upstream_http_x_auth_request_user; > auth_request_set $email > $upstream_http_x_auth_request_email; > proxy_set_header X-User $user; > proxy_set_header X-Email $email; > auth_request_set $auth_cookie $upstream_http_set_cookie; > add_header Set-Cookie $auth_cookie; > > auth_request_set $auth_cookie_name_upstream_1 > $upstream_cookie_auth_cookie_name_1; > > add_header X-Debug "$user"; > add_header X-Debug2 "$email"; > > set $username ocadmin; > > proxy_pass http://127.0.0.1:5601; > > proxy_set_header Authorization "Basic secret:secret"; > > > if ($user = "t...@mail.ru") { > set $username user1; > } > > proxy_set_header es-security-runas-user $username; > > } > > } > > переменную user и email в header видно, и если она ровна t...@mail.ru, if > все равно не выполняется > Кто подскажет в чем может быть проблема? Проблема в том, что if - выполняется при выборе конфигурации, см. описание модуля rewrite тут: http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html Соответственно к тому моменту, как выбрана конфигурация и началась обработка запроса в рамках "location /" - в частности, выполнился auth_request - директива if уже давно отработала, и пытаться в ней использовать результаты auth_request - бессмысленно. В данном случае правильно использовать map, как-то так (на уровне http): map $user $username { default ocadmin; t...@mail.ru user1; } Ну и соответственно убрать "set $username ..." и "if ($user ...". -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru