auth_request
auth_request 指令用于通过指定一个在授予资源访问之前会被检查的位置来实现基于子请求的认证。 — NGINX HTTP Core
auth_request
httpserverlocation
语法auth_request location;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1
说明
`auth_request` 指令允许 NGINX 通过向指定位置发起子请求来处理认证。该位置用于处理认证请求;如果子请求返回 2xx 状态码,则授予对原始请求的访问权限。若响应不是 2xx 状态,则拒绝访问,原始请求不会被处理。 该指令可在多种上下文中使用,包括 `http`、`server` 和 `location`,便于在不同服务器配置中灵活集成。该参数期望一个单一的位置名或路径,NGINX 将使用它来执行认证检查。通常,这会是一个专门的端点,用于处理检查用户凭据或对所评估请求的访问条件的逻辑。 在使用 `auth_request` 时,必须确保子请求位置已正确配置,以根据认证结果返回正确的状态码。若需要,子请求还可以携带原始请求的头部,从而允许更复杂的认证检查(例如考虑客户端信息)。
配置示例
location /protected {
auth_request /auth;
}
location = /auth {
internal;
# Authentication logic here
if ($http_authorization = "Bearer valid_token") {
return 200;
}
return 401;
}⚠
确保 subrequest 的 location 配置为仅处理 `internal` 请求;否则,客户端可以直接访问它。
⚠
注意:如果嵌套的 location 配置错误,可能会导致级联 subrequest 失败,从而意外拒绝访问。
⚠
subrequest 的响应必须返回合适的 HTTP 状态码(200 表示成功,其他代码表示拒绝),以便被正确处理。