Appearance
路由、负载均衡与重定向
访问服务可以将不同路径交给不同后端,也可为同一路由配置多个目标,或直接向客户端返回重定向。本文介绍如何选择动作、填写路由并验收;创建服务的基础字段见创建与修改服务。
操作前准备
- 具有访问服务管理权限,已确定要新建或修改的域名与入口端口。
- 每个转发后端均已运行,并能从 HiHTTPS 网络访问;确认后端能处理实际转发的路径。
- HTTPS 服务已准备覆盖业务域名的证书与私钥,入口网络可达;证书配置见服务 HTTPS、TLS 与 TLCP。
- 改动已有业务前记录路由及目标,确认维护窗口;重定向前先验证目标网站可用,尤其检查 TLS 和循环跳转。
以下示例中 192.168.8.10 是 HiHTTPS,192.168.8.223、192.168.8.224 是后端。请替换成实际域名和地址;内网 IP 仅供能够路由到它的客户端使用。
配置路径与动作
- 进入
访问服务 -> 访问服务,新建或编辑目标服务,切换到路由规则。 - 保留根路径
/作为兜底。根规则固定在最后,不能删除或修改路径,但可以修改动作和目标。 - 需要单独处理路径时,点击 添加路径规则(Location),填写如
/api/的路径。新增规则显示在根规则上方,不要把显示顺序简单当作全部规则的匹配优先级。 - 选择动作,并填写对应目标,检查后保存。保存报错时先修正具体问题,不将表单已提交当作配置已生效。
| 字段或动作 | 如何使用 | 边界 |
|---|---|---|
| 路径 | 如 /api/,根路径 / 兜底;自定义路径规则支持动态路径变量(自 V1.3 起),可用变量以界面提示为准 | 路径前缀不会自动从转发请求中删除;动态变量仅用于路径匹配,不适用于重定向目标 |
| 转发 | 填完整后端 URL,如 http://192.168.8.223:9000 | 使用后端真实协议,与客户端入口协议独立 |
| 添加目标地址 | 为同一路由配置多台后端 | 每条转发路由最多 20 个目标,不是整个服务最多 20 条路由 |
| 权重 | 1–100 的整数,默认 1 | 相对权重,不要求合计 100;还需应用正确处理会话与数据 |
| 重定向 | 填其他域名的完整 HTTP(S) URL | 返回客户端跳转响应,不代为访问目标;静态地址不自动保留原路径参数 |

Nginx 编辑器为滚动区域,图中仅展示部分内容。
原始 Nginx 配置的同步边界
原始 Nginx 配置 展示表单生成的路由片段,不是完整配置文件编辑器。编辑后移出输入框,只有能解析回表单、且重新生成后与输入完全一致的配置才会同步。
界面提示“已脱离表单”时,草稿不会随表单保存;点击 恢复表单生成 会放弃草稿。不要将“文本框里还看得到内容”当作已经应用,也不要假定任意指令都能与表单无损转换。独立的高级配置入口与维护要求见高级:自定义配置。
示例:同域名按路径分流
场景:通过 https://portal.example.com 访问网站,将 /api/ 下的请求转发到另一项 API 服务。
- 在
详细内容填写portal.example.com,入口选择 HTTPS /443。 - 在
证书配置选择覆盖该域名的可用证书。 - 在
路由规则添加/api/,并保留根路径/:
| 路径 | 动作类型 | 转发目标 | 用途 |
|---|---|---|---|
/api/ | 转发 | http://192.168.8.223:9000 | API 服务 |
/ | 转发 | http://192.168.8.223:8080 | 网站页面及其他请求 |
本例目标只填协议、主机和端口,不附加路径,也不设置重写,因此请求路径会保留:
https://portal.example.com/index.html→http://192.168.8.223:8080/index.htmlhttps://portal.example.com/api/users→http://192.168.8.223:9000/api/users
保存后,分别验证后端真实存在的网站页面和 API:
bash
curl -i --resolve portal.example.com:443:192.168.8.10 https://portal.example.com/index.html
curl -i --resolve portal.example.com:443:192.168.8.10 https://portal.example.com/api/users路径规则不会自动去掉前缀
API 后端必须能处理 /api/users,不会自动改为 /users。若后端没有 /api/ 前缀,需要另行确认适用的路径重写方案,或改用独立域名。填写 /api/ 时保留末尾 /,验证地址也须包含此前缀。
示例:多目标加权转发
场景:同一个应用运行在两台后端上,希望通过 https://app.example.com 分担请求,其中一台承担较多流量。
- 分别确认两台后端能处理相同域名、路径和业务请求。会话状态应由应用妥善共享,不能假定加权转发会自动保持登录会话。
- 新建或编辑访问服务,入口使用 HTTPS /
443,关联覆盖域名的有效证书。 - 找到根路径
/,动作选择 转发,添加目标:
| 转发目标 | 权重 | 含义 |
|---|---|---|
http://192.168.8.223:8080 | 3 | 相对承担较多请求 |
http://192.168.8.224:8080 | 1 | 相对承担较少请求 |
- 保存并确认没有配置错误,从客户端访问业务:
bash
curl -i --resolve app.example.com:443:192.168.8.10 https://app.example.com/- 对照两台后端的应用日志,或用应用提供的实例标识区分处理节点。
权重表示相对比例,不要求合计为 100。本例长期分配趋势约为 3:1,不是保证每四次请求严格分成三次和一次;少量请求、连接复用或后端异常都可能影响观察结果。
完成检查:每个后端均有正常响应,请求到达预期节点;登录、写入等关键操作不会因切换节点失效。修改后端或权重后重新检查,不把“保存成功”当作所有节点健康的证明。
示例:跳转到其他域名
场景:将旧入口 http://old.example.com 统一跳转到新网站 https://www.example.com/start,不再代理旧应用。
- 确认新网站可用、HTTPS 校验正常;HiHTTPS 不会自动创建跳转目标网站。
- 新建访问服务,域名填写
old.example.com,入口选择 HTTP /80。 - 将根路径
/的动作改为 重定向,填写静态 URLhttps://www.example.com/start并保存。 - 从客户端检查第一次响应,不添加
-L:
bash
curl -i --resolve old.example.com:80:192.168.8.10 'http://old.example.com/legacy?from=test'新建表单默认返回 301,响应头 Location 应为 https://www.example.com/start。当前表单没有独立状态码选择框,不为切换状态码随意修改原始配置。最后用浏览器访问旧地址,确认最终页面可达且没有循环。
跳转地址限制
不允许把本服务域名作为重定向目标,即使协议或端口不同也不行。同域名的 HTTP 到 HTTPS 跳转不使用本节的静态重定向,请在 证书配置 -> 高级设置 -> SSL 选项 中开启 强制 HTTPS,见服务 HTTPS 配置。
重定向目标使用静态地址,不支持 $host、$request_uri 等变量,也不会自动追加原路径或查询参数。本例的 /legacy?from=test 不会带到新地址。需要逐路径对应的迁移,应先确认当前版本支持的方案,不能用固定跳转代替。
完成检查
- 根路径与新增路径分别访问,确认请求到达正确后端,实际路径符合后端预期。
- 多后端均可用,关键业务和共享会话正常;不要求少量请求严格体现权重比例。
- 重定向的首次状态与
Location正确,最终站点可达且无循环,路径参数是否保留符合静态跳转限制。 - HTTPS 校验、访问控制和未修改的其他路径仍正常;没有未保存的原始配置草稿被误认为已生效。
