loop_detect_status

指令 `loop_detect_status` 配置在 NGINX 中当请求超出允许的循环限制时返回的 HTTP 状态码。

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

说明

指令 loop_detect_statusngx_http_loop_detect_module 的一部分,该模块使 NGINX 在处理 CDN 头时能够管理和防止请求循环。通过指定此指令,用户可以定义一个自定义的 HTTP 状态码,当允许的请求循环次数(由指令 loop_detect_max_allow_loops 设置)被超过时,NGINX 将返回该状态码。该状态码必须位于客户端和服务器错误代码的范围内,具体在 400 到 599 之间。

通过 loop_detect 指令启用时,该模块会监视传入请求的 CDN-Loop 头,该头指示 HTTP 请求通过各个 CDNs 所经过的路径。如果传入请求的循环计数超过配置的最大值,NGINX 将使用 loop_detect_status 指定的 HTTP 状态码进行响应。这样可以让开发人员和系统管理员优雅地处理循环情况,并适当地向客户端通报其请求的状态。

选择一个在应用上下文中合适的状态码很重要;例如,508 (Loop Detected) 常用于检测到无限循环的情况,因此在此情况下是一个合适的选择。采用合适的状态码不仅有助于开发人员调试,也能更有效地向客户端传达错误的性质。

配置示例

location / {
    loop_detect on;
    loop_detect_cdn_id my_cdn_id;
    loop_detect_status 508;
    loop_detect_max_allow_loops 10;
    proxy_set_header CDN-Loop $loop_detect_proxy_add_cdn_loop;
    proxy_pass http://example.upstream.com;
}

确保状态码在400到599之间;否则,NGINX会拒绝该配置。

使用不能向客户端正确传达问题的状态码可能会导致混淆。

← 返回所有指令