Re: Уточнение логики работы ngx_http_auth_request_module

Maxim Dounin mdounin at mdounin.ru
Wed Nov 6 12:15:12 UTC 2013


Hello!

On Wed, Nov 06, 2013 at 03:53:09PM +0400, Eugene Mychlo wrote:

> Добрый день,
> 
> 05 нояб. 2013 г., в 0:19, Maxim Dounin <mdounin at mdounin.ru> написал(а):
> 
> […]
> 
> > 
> > Модуль auth_request не пытается реализовывать каких-либо 
> > протколов сам, он просто делает подзапрос.  Точно так же, как это 
> > делает SSI или модуль addition.
> > 
> > Настроить необходимую обработку для соответствующего URI, который 
> > вы используете в auth_request - ваша задача, будь то проксирование 
> > или что-либо ещё.
> 
> […]
> 
> Раз возник топик про логику auth_request, задам и я пару уточняющих воросов:
> 
> 1. Что вернется клиенту, если auth-подзапрос вернет код отличный от 200, 403 и 401, скажем 404 или 301, или 5xx?

Клиенту уйдёт 500, в логах появится запись "[error] ... auth 
request unexpected status: 404 ...".

> 2. Есть ли возможность в основном запросе получить, в виде переменных, заголовки возвращаемые  auth-подзапросом?
> Просто есть желание заменить X-Accel-Redirect, и проксировать на разные бэкенды в зависимости от того, что вернул auth-бэкенд.

Антон уже отписал, директива auth_request_set - позволяет вынуть 
данные из заголовков ответа бекенда и сложить их в переменные.  
Использовать можно как-то так:

    location / {
        auth_request /auth;
        auth_request_set $backend $upstream_http_x_backend;

        proxy_pass http://$backend;
    }

http://nginx.org/r/auth_request_set

-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru