access_deny_status

access_deny_status 指令设置在访问控制规则拒绝访问时返回的 HTTP 状态码。

语法access_deny_status code;
默认值403
上下文http, server, location
参数1

说明

access_deny_status 指令用于 NGINX 的高级访问控制模块,用来指定在触发 deny 规则时应返回的特定 HTTP 状态码。默认情况下,该状态码为 403,表示服务器理解请求但拒绝授权。但该指令允许管理员自定义响应码,从而灵活地根据应用逻辑或需求配置合适的响应。

要使用 access_deny_status 指令,可将其放在 httpserverlocation 上下文中。这意味着它可以在全局级别、生效于某个 server 块或更具体的 location 块中定义响应状态。当匹配到 deny 规则时,NGINX 会检查配置的 deny 状态码并返回给客户端,而不是返回默认的 403,从而更好地传达发生了什么(例如,使用 404 表示未找到,或使用 401 表示未授权访问)。

请注意,如果应用了多个访问控制规则,首个匹配的 deny 规则将触发使用配置的状态码进行响应。此行为强调了需要谨慎组织规则以实现期望的控制流程。

配置示例

server {
    listen 80;
    server_name example.com;

    location /restricted {
        access_deny_status 404;
        access deny $var1;
    }
}

确保 access_deny_status 被正确放置在相关上下文 (http, server, location) 中;否则可能没有效果。

更改状态码可能影响客户端对响应的处理,因此请彻底测试以确保行为符合预期。

警惕冲突的访问规则,这可能导致意外结果或响应被覆盖。

← 返回所有指令