redirect

note
  • http_to_httpsuriregex_uri 只能配置其中一个属性。
  • http_to_https、和 append_query_string 只能配置其中一个属性。
  • 当开启 http_to_https 时,重定向 URL 中的端口将按如下顺序选取一个值(按优先级从高到低排列)
    • 从配置文件(conf/config.yaml)中读取 。
    • 如果 apisix.ssl 处于开启状态,读取 apisix.ssl.listen 并从中随机选一个 port
    • 使用 443 作为默认 https port

以下示例展示了如何在指定路由中启用 redirect 插件:

  1. curl http://127.0.0.1:9180/apisix/admin/routes/1 \
  2. -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  3. {
  4. "plugins": {
  5. "redirect": {
  6. "uri": "$uri/index.html",
  7. "ret_code": 301
  8. }
  9. },
  10. "upstream": {
  11. "type": "roundrobin",
  12. "nodes": {
  13. "127.0.0.1:80": 1
  14. }
  15. }

通过上述命令启用插件后,可以使用如下命令测试插件是否启用成功:

  1. HTTP/1.1 301 Moved Permanently
  2. Date: Wed, 23 Oct 2019 13:48:23 GMT
  3. Content-Length: 166
  4. Connection: keep-alive
  5. Location: /test/default.html
  6. ...

以下示例展示了如何将 HTTP 重定向到 HTTPS:

  1. curl http://127.0.0.1:9080/hello -i

当你需要禁用 redirect 插件时,可以通过如下命令删除相应的 JSON 配置,APISIX 将会自动重新加载相关配置,无需重启服务:

  1. curl http://127.0.0.1:9180/apisix/admin/routes/1 \
  2. -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  3. {
  4. "uri": "/test/index.html",
  5. "plugins": {},
  6. "upstream": {
  7. "type": "roundrobin",
  8. "nodes": {
  9. "127.0.0.1:80": 1
  10. }