在 Nginx 中,return 指令用于立即返回一个响应给客户端,而不经过任何进一步的处理。这对于简单的重定向、返回固定的状态码或消息非常有用。以下是一些使用 return 指令的常见场景和示例:
基本用法
-
返回状态码
你可以使用
return指令直接返回一个特定的 HTTP 状态码。例如:location /maintenance { return 503; }这个配置会让访问
/maintenance路径的请求返回一个 503 Service Unavailable 错误。 -
返回状态码和文本
你还可以返回一个状态码和自定义的响应文本:
location / { return 200 "Hello, World!"; }这会返回状态码 200 和响应体 "Hello, World!"。
-
重定向
return指令可以用于重定向请求到另一个 URL。通过指定一个 3xx 状态码和目标 URL:location /old-path { return 301 https://www.example.com/new-path; }这个配置会将访问
/old-path的请求重定向到https://www.example.com/new-path,并返回状态码 301(永久重定向)。
使用变量
你可以在 return 指令中使用 Nginx 变量,来动态生成响应。例如:
location / {
set $new_url "https://www.example.com";
return 302 $new_url;
}
这个配置会将所有请求重定向到 https://www.example.com,并返回状态码 302(临时重定向)。
注意事项
-
优先级:
return指令会立即终止请求处理并返回响应,因此它的优先级很高。如果在一个location块中使用return,那么任何后续的处理(如proxy_pass或rewrite)都会被跳过。 -
灵活性:
return指令非常灵活,适用于简单的重定向和状态码返回,但对于更复杂的逻辑处理,可能需要结合if指令或者使用更高级的模块。
通过合理使用 return 指令,你可以简化 Nginx 配置并提高处理效率,尤其是在需要快速返回响应的场景中。