rewrite_status

The `rewrite_status` 指令根据指定条件修改响应状态码。

语法rewrite_status status [if=condition];
默认值none
上下文http, server, location
参数1-2

说明

The rewrite_status 指令允许你重写服务器返回的响应状态码。它可以接受一个或两个参数:状态码(例如 404、500 等)以及可选条件,形式为 'if=condition'。如果指定的条件计算结果为真,响应的状态码将被更改为定义的状态码。此功能可用于根据特定条件自定义响应,例如检查头部或变量的值。

此指令可在多种上下文中使用,包括 httpserverlocation。当调用时,模块会收集通过 rewrite_status 指定的规则,并在请求处理阶段应用这些规则。如果定义了多个规则,它们按添加顺序依次评估,确保第一个匹配的规则决定返回给客户端的最终状态码。

尽管功能强大,开发者在使用此指令时应谨慎,以避免无意覆盖关键状态码,从而可能误导客户端或影响代理或浏览器的缓存策略。此外,值得注意的是,该模块目前被视为实验性,这可能意味着缺乏全面的测试或功能,并可能在生产环境中存在不稳定性。

配置示例

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location / {
        rewrite_status 404 if=$http_rsp_404_status;
        proxy_pass http://foo.com;
    }
}

确保条件准确反映您想要测试的状态;不正确的条件可能导致意外的状态码输出。

在重写像 200 或 500 这样的重要状态码时要小心,因为这可能会误导客户端并影响缓存行为。

此指令属于实验性模块;在将其用于生产环境之前,请考虑其稳定性和支持方面的影响。

← 返回所有指令