nginx-重写后 auth_request 设置 url

nginx-重写后 auth_request 设置 url

在我的 nginx 配置中,我有以下指令:

location /api/v2/compute {
    rewrite (?i)^/api/v2/compute(.*)$ /api/v2/internal$1 break;

    auth_request /enforce;

    proxy_pass http://vm-manager;
}

我想要一个 /enforce 端点来转发(在标头中)URI重写后

location = /enforce {
    proxy_set_header X-Forwarded-Method $request_method;
    proxy_set_header X-Forwarded-Uri $request_uri;

    proxy_pass http://enforcer;
}

问题是 $request_uri 包含原始 URL,而不是重写后的 URL。如果我使用proxy_set_header X-Forwarded-Uri $uri;,我会得到当前处理的 URL - /enforce

我尝试set $rewrite_uri $uri在原始位置和proxy_set_header X-Forwarded-Uri $rewrite_uri;/enforce,但不起作用。

您知道如何在 auth_request 中设置重写后的 URL 吗?

答案1

我最终能够使用ngx_headers_more模块。

location /api/v2/compute {
    rewrite (?i)^/api/v2/compute(.*)$ /api/v2/internal$1 break;

    more_set_input_headers "X-Forwarded-Uri: $uri";
    auth_request /enforce;

    proxy_pass http://vm-manager;
}

相关内容