server_redirect

`server_redirect` 指令允许基于可配置规则将传入请求动态重定向到指定服务器。

语法server_redirect server_name [condition];
默认值none
上下文server
参数1-2

说明

server_redirect 指令在 NGINX 中用于根据定义的条件将请求从一个服务器重定向到另一个服务器。该指令可以接受一个或两个参数;第一个参数是请求将被重定向到的目标服务器名称,第二个参数为可选条件,可用于指定何时进行重定向,这对于基于请求参数或头部的动态或条件性重定向很有用。

配置后,该指令通过评估定义的规则来处理传入请求。一旦匹配,它可以使用 NGINX 的内部机制将请求重定向到指定的目标服务器。另外,包含的 schedule_redirect 选项可以帮助控制重定向发生的时间,为管理服务器流量提供额外的灵活性。该指令有效地允许通过按需重定向流量来创建更自适应和更具响应性的服务器部署,而无需额外的基础设施更改。

该 NGINX 模块随后依赖于其 C code 中定义的若干子例程,负责管理这些规则的处理方式并根据请求的内容和上下文触发相应的重定向。这可能包括处理存储原始请求主机的变量,从而允许根据请求来源等因素实现更复杂的重定向场景。

配置示例

http {
    server {
        listen 80;
        server_name example.com;

        # Redirect all requests to another server unconditionally.
        server_redirect newserver.com;

        location / {
            proxy_pass http://newserver.com;
        }
    }

    server {
        listen 80;
        server_name newserver.com;

        # Retrieve the original host header in responses.
        add_header x-original-host $server_redirect_original_host;

        location / {
            proxy_pass http://upstream.com;
        }
    }
}

确保所使用的服务器名称在 NGINX 配置中被正确定义,以避免错误指向。

条件重定向必须预先正确定义相关变量;否则,服务器将无法按预期进行重定向。

请记住,如果该指令配置错误,可能会导致无限重定向循环。始终仔细测试条件。

← 返回所有指令