return
指令 `return` 会立即向客户端返回指定的 HTTP 状态码或重定向响应。 — NGINX HTTP Core
return
serverlocationif in serverif in location
语法return code | code url;
默认值none
上下文server, location, if in server, if in location
模块NGINX HTTP Core
参数1-2
说明
指令 `return` 是 NGINX 的一个多用途功能,允许你在服务器或 location 块的不同上下文中发送 HTTP 响应。它可以接受一或两个参数:第一个参数指定 HTTP 状态码(例如 200、404、301),可选的第二个参数可以提供用于重定向的 URL。当该指令执行时,会立即终止请求处理,丢弃后续的任何配置或处理步骤。这样可以在不需要复杂配置或逻辑的情况下简化响应。 如果只提供了状态码而没有 URL,则会向客户端返回带有指定状态码的简单响应。如果需要重定向,你可以像 `301`(永久移动)这样指定状态码,并提供新的 URL。该指令在给定上下文中处理,但在条件语句(即在 `if` 块内)中使用时也可以与其他指令链式组合。将 `return` 与条件结合,可以根据请求参数或头部实现更灵活的响应行为。
配置示例
location /old-path {
return 301 https://example.com/new-path;
}
location /not-found {
return 404;
}⚠
在 `if` 指令内部使用 `return` 时,如果结构不当,可能产生意外行为。注意 NGINX 对 `if` 块的处理方式。
⚠
当使用带相对路径的重定向时,确保 URL 以 `http://` 或 `https://` 开头,以避免不期望的行为,因为相对路径可能导致本地重定向,从而使客户端混淆。