You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过API网关Apache APISIX将客户端HTTP请求重定向至HTTPS

Apache APISIX 实现HTTP到HTTPS重定向的方案与原理

常规实现方案

  • 插件配置方式
    最通用的实现是使用官方内置的redirect插件,你可以根据生效范围把插件绑定在全局规则、指定服务或者单条路由上:
    # 示例:给全局规则绑定redirect插件实现全站跳转
    curl http://127.0.0.1:9180/apisix/admin/global_rules/1 -H 'X-API-KEY: your-admin-key' -X PUT -d '
    {
      "plugins": {
        "redirect": {
          "http_to_https": true,
          "ret_code": 301
        }
      }
    }'
    
    配置里ret_code字段可以自定义返回的状态码,默认是302临时跳转,做永久跳转推荐设为301,对搜索引擎更友好。
  • K8s Ingress场景快速配置
    如果是在Kubernetes集群中使用APISIX Ingress,不需要手动调用Admin API,直接给对应的Ingress资源添加注解k8s.apisix.apache.org/http-to-https: "true"即可开启对应域名的跳转。

更便捷的内置方案

如果你不需要对特定域名、路径做跳转豁免,优先用APISIX原生内置的全局跳转开关,比插件方案性能更好,配置也更简单:
直接修改APISIX配置文件conf/config.yaml,在http配置块下开启enable_http_to_https参数即可:

apisix:
  http:
    listen: 9080
    enable_http_to_https: true # 开启后所有HTTP端口的请求自动跳转HTTPS
  https:
    listen: 9443

修改完重启APISIX就会全局生效,不需要额外配置任何插件,也不会占用插件执行的性能开销。如果有部分路径需要跳过跳转,还是推荐用redirect插件,通过exclude_uri或者exclude_host参数配置白名单。

重定向功能工作原理

整个重定向流程分三个核心环节:

  • 请求协议识别
    首先判断当前请求的来源:如果是HTTP监听端口收到的明文请求,直接命中跳转规则;如果是HTTPS端口收到、但请求头里携带的X-Forwarded-Proto值为http(适配前端挂载了CDN、SLB等四层/七层代理的场景),同样会命中跳转规则。
  • 跳转地址拼接
    规则命中后,会自动从请求头提取Host字段作为目标域名,保留原始请求的URI路径、查询参数,把协议前缀替换为https://,如果HTTPS监听端口不是默认443,会自动在域名后拼接对应端口,不需要手动配置域名规则。
  • 跳转响应返回
    服务端会给客户端返回你配置的跳转状态码,同时在响应头的Location字段写入拼接好的HTTPS地址,客户端收到响应后会自动向HTTPS地址发起新的请求。

踩坑提示:如果APISIX前端挂了其他反向代理,一定要确保前端代理正确传递X-Forwarded-Proto头,否则会出现HTTP跳HTTPS的死循环问题。

内容的提问来源于stack exchange,提问作者feihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 22:16:02