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