NGINX не отправляет заголовки или переменные в js_content внутри auth_request
Недавно у меня были проблемы с NGINX. Мне нужно создать обратный прокси-сервер NGINX, который берет некоторую информацию из определенных переменных NGINX и отправляет ее на сервер авторизации. Однако перед отправкой на указанный AuthServer его необходимо проанализировать в теле запроса HTTP POST.
Чтобы сделать этот последний шаг, я решил написать функцию NJS, которая берет эту информацию и отправляет ее на сервер авторизации через подзапрос.
Однако есть небольшая проблема: поскольку функция NJS вызывается внутри локации, она, по-видимому, не имеет доступа к переменным NGINX.
Итак, я попытался отправить значение переменных в функцию NJS через некоторые заголовки костюмов, добавленные конфигурацией (оба внутри
Вот мой файл конфигурации NGINX:
location /operation/ {
auth_request /authz;
auth_request_set $example_variable "Plz work variable";
add_header X-Example-Header1 "Plz work header 1";
proxy_set_header X-Example-Header2 "Plz work header 2";
proxy_pass_request_headers on;
proxy_pass http://service;
}
location /authz {
internal;
proxy_pass_header Authorization;
proxy_set_header Authorization $http_authorization;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Original-METHOD $request_method;
add_header X-Example-Header3 "Plz work header 3";
proxy_set_header X-Example-Header4 "Plz work header 4";
proxy_pass_request_headers on;
js_content auth_engine.authorize_operation;
}
Вот код функции JS, используемой в js_content:
function authorize_operation(r) {
r.log(JSON.stringify(r.headersIn));
r.log(JSON.stringify(r.variables));
// ...some code which sends data to OPA...
}
Обе строки кода в
Есть ли способ исправить это?
1 ответ
2-й запрос вашего вопроса: «r.variables» ничего не печатает.
Для использования переменных в njs (скрипт nginx js) в моем случае помогло указание точного имени переменной, которую вы ищете. например, пытаясь получить доступ к Request-URI:
var uri = r.variables.request_uri