Re: auth_request и переменные в proxy_pass
Maxim Dounin
mdounin на mdounin.ru
Вт Июл 21 17:47:15 UTC 2020
Hello!
On Tue, Jul 21, 2020 at 08:22:50PM +0300, Slawa Olhovchenkov wrote:
> On Tue, Jul 21, 2020 at 08:13:12PM +0300, Maxim Dounin wrote:
>
> > Hello!
> >
> > On Tue, Jul 21, 2020 at 06:05:22PM +0300, Slawa Olhovchenkov wrote:
> >
> > > А я правильно понимаю, что в блоке proxy_pass который активируется по
> > > auth_request никакие переменые от rewrite и/или $arg_ использовать не удастся?
> >
> > Почему нет? Ну то есть с переменными от модуля rewrite вообще
>
> ну вот попытка сделать set (блоком выше и потом использовать
> переменную) у меня как-то не сработала -- пусто.
> а set -- это rewrite только в порфиль.
Видимо, "как-то не сработала" по каким-то другим причинам.
Скажем, если делать set на уровне server - то он потом ещё раз
сделается в подзапросе, и результат может быть отличен от
ожидаемого (особенно если этот set использует переменные $arg_*,
которые в подзапросе будут иметь другие значения).
С какой-то такой конфигурацией работает без проблем:
server {
listen 8080;
location / {
set $foo $arg_foo;
auth_request /auth;
}
location = /auth {
if ($foo) {
return 204;
}
return 401;
}
}
$ curl -I http://127.0.0.1:8080/?foo=0
HTTP/1.1 401 Unauthorized
Server: nginx/1.19.1
Date: Tue, 21 Jul 2020 17:38:19 GMT
Content-Type: text/html
Content-Length: 179
Connection: keep-alive
$ curl -I http://127.0.0.1:8080/?foo=1
HTTP/1.1 200 OK
Server: nginx/1.19.1
Date: Tue, 21 Jul 2020 17:38:22 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 18 Jul 2017 14:42:47 GMT
Connection: keep-alive
ETag: "596e1e67-264"
Accept-Ranges: bytes
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru