Skip to content

从 NGINX 迁移到矩尺

概述

本文档面向熟悉 NGINX 配置的工程师,通过一个完整的迁移示例和差异对照,帮助您将 NGINX 配置翻译为矩尺平台配置。概念层面的对照请参考 核心概念与产品对照

建议阅读顺序:先读 核心概念与产品对照 建立概念映射,再回到本文档看实战迁移流程。

迁移工作流

从 NGINX 迁移到矩尺,按以下顺序创建资源:

1. 添加转发引擎           →  对应 NGINX 所在的主机
2. 上传 SSL 证书(可选)  →  对应 .crt / .key 文件
3. 创建健康检查策略       →  对应 nginx-plus 的 health_check(开源版无内置)
4. 创建服务器池           →  对应 upstream 块
5. 创建分发策略           →  对应 location 匹配条件 / if 指令
6. 创建七层/四层策略      →  对应 proxy_set_header、gzip、rewrite 等指令
7. 创建会话保持策略       →  对应 sticky cookie / ip_hash
8. 创建虚拟服务           →  对应 server 块(组合以上所有组件)
9. 变更执行               →  对应 nginx -s reload

完整迁移示例

假设您有以下 NGINX 配置,我们逐步将其翻译为矩尺配置:

nginx
upstream app_backend {
    server 10.1.9.114:8000 weight=5 max_fails=3 fail_timeout=30s;
    server 10.1.9.117:8000 weight=5 max_fails=3 fail_timeout=30s;
    keepalive 32;
}

upstream admin_backend {
    server 10.1.9.200:8000;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate     /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/keys/example.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_session_cache   shared:SSL:10m;

    gzip on;
    gzip_types text/plain application/json;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location /admin/ {
        allow 10.0.0.0/8;
        deny all;
        proxy_pass http://admin_backend;
    }

    location /api/ {
        proxy_pass http://app_backend;
    }

    location /static/ {
        root /var/www;
    }

    location / {
        return 301 https://www.example.com/;
    }
}

步骤 1:添加转发引擎

将 NGINX 所在的主机(或新主机)作为转发引擎添加到矩尺平台。入口:【平台系统 → 基础设施 → 转发引擎】。

步骤 2:上传 SSL 证书

example.crtexample.key 上传到矩尺。【平台系统 → SSL 证书管理】。注意证书和私钥需使用相同名称配对。

详细步骤参见 快速创建HTTPS虚拟服务 - 上传证书

步骤 3:创建健康检查策略

NGINX 配置中的 max_fails=3 fail_timeout=30s 约定了健康检查行为,但开源 NGINX 只做被动检查(请求失败才计数)。矩尺可配置主动健康检查:

  1. 创建健康检查策略(例如 HTTP 协议,GET /health,期望 200)
  2. 高级配置:下线检测快(间隔 3s,连续 2 次失败),上线确认慢(间隔 10s,连续 3 次成功)

详细配置参见 健康检查配置指南

步骤 4:创建服务器池

创建两个服务器池,分别对应 upstream app_backendupstream admin_backend

upstream矩尺服务器池节点
app_backendapp-pool10.1.9.114:8000 (权重5), 10.1.9.117:8000 (权重5)
admin_backendadmin-pool10.1.9.200:8000

配置要点:

  • 负载均衡算法:加权轮询(对应 NGINX 默认的加权 round-robin)
  • 健康检查:绑定步骤 3 创建的检查策略
  • keepalive 32 → 七层策略中配置 TCP 连接复用(见步骤 6)

步骤 5:创建分发策略

将 NGINX 的 location 匹配条件和 allow/deny 翻译为分发策略:

NGINX矩尺分发策略
location /admin/URL 前缀匹配 = /admin/
allow 10.0.0.0/8; deny all源地址 = 10.0.0.0/8(内网 IP 段)
location /api/URL 前缀匹配 = /api/
location /static/URL 前缀匹配 = /static/

步骤 6:创建七层策略

NGINX 中的 proxy_set_headergzip 等指令,在矩尺中集中配置为一个七层策略对象:

NGINX 指令矩尺七层策略配置
proxy_set_header Host $hostHost 头部传递策略
proxy_set_header X-Real-IP $remote_addr开启 X-Forwarded-For
gzip on; gzip_types ...HTTP 压缩策略(Gzip / Brotli)
keepalive 32TCP 连接复用

步骤 7:创建 SSL 策略和会话保持策略

NGINX矩尺配置
ssl_certificate / ssl_certificate_keySSL 客户端策略 → 选择步骤 2 上传的证书
ssl_protocols TLSv1.2 TLSv1.3SSL 客户端策略 → 支持的 SSL 协议
ssl_session_cache shared:SSL:10mSSL 客户端策略 → 开启 Session 缓存
无(需 sticky cookie 指令)会话保持策略 → Cookie 插入

步骤 8:创建虚拟服务

创建虚拟服务 www-https,将以上组件组合在一起:

虚拟服务 "www-https"
  协议: HTTPS, 监听: 0.0.0.0:443
  服务域名: www.example.com
  SSL 客户端策略: (步骤 7)
  启用 HTTP/2: 是

  ├── 分发规则 "admin-rule"(高优先级)
  │    分发策略: URL 前缀 /admin/ + 源地址 10.0.0.0/8
  │    处理方式: HTTP代理 → admin-pool

  ├── 分发规则 "admin-deny"(高优先级)
  │    分发策略: URL 前缀 /admin/
  │    处理方式: 指定错误码 403

  ├── 分发规则 "api-rule"(中优先级)
  │    分发策略: URL 前缀 /api/
  │    处理方式: HTTP代理 → app-pool
  │    七层策略: (步骤 6)

  ├── 分发规则 "static-rule"(中优先级)
  │    分发策略: URL 前缀 /static/
  │    处理方式: 静态资源 → 去前缀 /static

  └── 默认分发规则
       处理方式: 重定向 → https://www.example.com/

步骤 9:变更执行

相当于 nginx -s reload。点击"变更执行"按钮使所有配置在转发引擎上生效。


关键行为差异

从 NGINX 迁移时,需特别注意以下行为差异:

场景NGINX矩尺
匹配优先级location 书写顺序 + 修饰符(= ~ ^~显式优先级(高/中/低)+ URL 类型(正则>完全>前缀)+ 先后顺序
健康检查开源版仅被动检查(请求失败才标记 down主动健康检查,支持 20+ 协议和 AND/OR 协作
静态资源依赖服务器本地文件路径压缩包上传到管理节点,自动同步到转发引擎,支持目录映射
会话保持ip_hash 仅支持源地址;sticky 需 Plus六种方式,支持跨虚拟服务共享
日志access_log 输出到文件图形化日志中心 + Syslog 外发,支持客户端全景分析
证书管理文件路径直接引用证书上传到平台统一管理,过期自动预警
配置生效nginx -s reload点击"变更执行",变更期间长连接可保持(由集群网络策略控制)
多租户无内置支持RTBAC 多租户权限体系,控制面和数据面双重隔离

概念层面的详细映射请参考 核心概念与产品对照。从 NGINX 配置到矩尺配置的匹配逻辑对照参见 分发规则匹配逻辑详解