access_deny_status
access_deny_status 指令设置在访问控制规则拒绝访问时返回的 HTTP 状态码。
Advanced access control based on variables
·
httpserverlocation
语法access_deny_status code;
默认值403
上下文http, server, location
参数1
说明
access_deny_status 指令用于 NGINX 的高级访问控制模块,用来指定在触发 deny 规则时应返回的特定 HTTP 状态码。默认情况下,该状态码为 403,表示服务器理解请求但拒绝授权。但该指令允许管理员自定义响应码,从而灵活地根据应用逻辑或需求配置合适的响应。
要使用 access_deny_status 指令,可将其放在 http、server 或 location 上下文中。这意味着它可以在全局级别、生效于某个 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) 中;否则可能没有效果。
⚠
更改状态码可能影响客户端对响应的处理,因此请彻底测试以确保行为符合预期。
⚠
警惕冲突的访问规则,这可能导致意外结果或响应被覆盖。