# 重定向

这是个很常用功能,和 NGINX 提供的 rewrite 指令类似,却更简明易懂。

它属于应用的改写规则,我们直接新建一个改写规则来看看如何使用。

动作的下拉列表里面有很多选项,我们拉到 “响应动作”,从中选择重定向

重定向的参数会比较多,我们分别解释下:

  1. URL: 默认是当前 URL,不做更改。你可以下拉框里面选择自定义,输入另外一个 URL;
  2. URL 参数:默认是不带参数,你可以选择使用当前的 URL 参数或者是自定义;
  3. 协议:默认是当前请求的协议,可以另外选择 http 或者 https;
  4. 主机名: 默认是当前请求的主机名,可以自定义;
  5. 端口: 如果协议是 http 那么默认是80,如果是 https 默认就是443,一样可以自定义;
  6. 代码: 默认是 302,可以自行从下拉框中选择;

下面的示例,是把 http 的请求重定向到 https,其他不做变化:

设置完条件后,我们来设置重定向:

那么这个限制规则到底生效没有呢?我们来验证下。

我们首先要进入发布页面,把这个规则同步到所有网关的节点中去。

如果发布可以查看发布,这里不再赘述。

然后再打开 shell 来模拟客户端的访问。

$ curl -i -H 'host: rewrite-rule-test.com'  http://52.43.45.19/404.html
HTTP/1.1 404 Not Found
Server: openresty+
Date: Mon, 21 Jan 2019 15:48:40 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>openresty</center>
</body>
</html>

可以应答体是 302 跳转到了 https 的地址,其他的参数都没有变动。