У меня есть блок местоположения с auth_request
как это
location /somepath {
auth_request /authorize;
auth_request_set $header_variable $upstream_http_custom_header;
proxy_path http://backendaddress;
}
Что я хочу сделать, это если $header_variable
не соответствует определенному регулярному выражению. Я хочу вернуть код 403.
if
не сработает, потому что запускается слишком рано. Что еще могло бы позволить мне это сделать?
Модуль Nginx auth_request ждет HTTP-кода 200 или 401/403 от бэкэнда:
Модуль ngx_http_auth_request_module (1.5.4+) реализует авторизацию клиента на основе результата подзапроса. Если подзапрос возвращает код ответа 2xx, доступ разрешен. Если он возвращает 401 или 403, доступ запрещается с соответствующим кодом ошибки. Любой другой код ответа, возвращенный подзапросом, считается ошибкой.
В вашем запросе есть заголовок, требующий проверки разрешения:
Я хочу сделать следующее: если $ header_variable не соответствует конкретному регулярному выражению, я хочу вернуть код 403.
Во время цикла запроса / ответа аутентификации ваш бэкэнд должен проверить заголовок и вернуть код 403, чтобы предотвратить следующий запрос без аутентификации. Модуль auth_request работает как простой тестовый assert, который возвращает один из кодов. Это означает, что серверный процесс отвечает за этот URL-адрес для ответа http: // backendaddress / авторизоваться требуется дополнительная проверка требуемого заголовка.