重定向

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

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

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

重定向 - 图1

重定向 - 图2

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

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

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

重定向 - 图3

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

重定向 - 图4

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

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

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

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

  1. $ curl -i -H 'host: rewrite-rule-test.com' http://52.43.45.19/404.html
  2. HTTP/1.1 404 Not Found
  3. Server: openresty+
  4. Date: Mon, 21 Jan 2019 15:48:40 GMT
  5. Content-Type: text/html
  6. Content-Length: 166
  7. Connection: keep-alive
  8. <html>
  9. <head><title>404 Not Found</title></head>
  10. <body bgcolor="white">
  11. <center><h1>404 Not Found</h1></center>
  12. <hr><center>openresty</center>
  13. </body>
  14. </html>

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