
第一步准备“施工工具”安装依赖编译源码需要用到 C 语言编译器和一些基础库。在 Linux 终端输入以下命令yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel第二步下载并解压源码去 Tengine 官网下载源码包然后解压。老师这里以 3.1.0 版本为例wget http://tengine.taobao.org/download/tengine-3.1.0.tar.gz tar -zxvf tengine-3.1.0.tar.gz cd tengine-3.1.0第三步配置、编译与安装核心这是最关键的一步我们只需要执行三个命令配置检查环境准备编译./configure编译把代码翻译成机器能懂的语言make安装把编译好的文件放到系统目录里make install4.检查cd /usr/local/nginx/sbin ./nginx -v 查看版本 ./nginx 启动 ./nginx -s stop 停止 ./nginx -t 语法检查 ./nginx -s relaod 重载配置5.加入环境变量#临时生效 export PATH$PATH:/usr/local/nginx/sbin #永久生效 echo export PATH$PATH:/usr/local/nginx/sbin /etc/profile source /etc/profileTengine 是阿里基于官方 Nginx 二次开发100% 兼容 Nginx 所有配置、指令、模块你写的 nginx.conf 直接丢给 Tengine 就能跑 所有原生 Nginx 有的能力它全都保留一、负载均衡系列Tengine 最核心新增1. VNSWRR 平滑加权轮询替代原生加权轮询原生 Nginx 加权轮询权重差距大时流量扎堆 Tengine 默认 upstream 就是平滑加权无需额外指令。upstream web_server { server 192.168.1.10:8080 weight3; server 192.168.1.11:8080 weight1; # Tengine自动启用VNSWRR流量均匀打散 } server { listen 80; location / { proxy_pass http://web_server; } }2. 内置主动健康检查原生 Nginx 无必须第三方模块upstream web_server { server 192.168.1.10:8080 weight3; server 192.168.1.11:8080 weight1; # 开启主动健康探测 check interval2000 rise2 fall3 timeout1000 typehttp; # 每隔2秒探测一次连续2次成功标记上线连续3次失败标记宕机超时1秒 check_http_send HEAD /health HTTP/1.1\r\nHost:localhost\r\nConnection:close\r\n\r\n; # 访问后端健康接口 check_http_expect_alive http_2xx http_3xx; # 返回2xx/3xx判定节点正常 }3. consistent_hash 一致性哈希内置常用于图片缓存、会话绑定按 URL 哈希upstream cache_cluster { consistent_hash $request_uri; # 根据请求地址哈希 server 192.168.2.10:80; server 192.168.2.11:80; server 192.168.2.12:80; }4. session_sticky Cookie 会话保持优于 ip_hash解决公司内网所有人同一个 IP 挤一台服务的问题upstream app { session_sticky; # 下发cookie绑定后端节点 server 192.168.3.10:8080; server 192.168.3.11:8080; }5. dyups 后端域名动态解析原生 Nginx upstream 域名只启动时解析一次Tengine 自动定时刷新 DNSupstream api { server api.service.com:8080; # 填写域名 dyups; # 开启动态域名解析 }二、系统 并发性能优化配置1. reuseport 多核端口复用优化强化版events { worker_connections 10240; reuse_port on; # Tengine深度优化多核并发暴涨 }2. sysguard 系统过载保护原生 Nginx 没有服务器内存 / CPU 过高时拒绝新连接防止被 OOM 杀死sysguard on; # CPU持续超过85%触发保护 sysguard cpu_max 85; # 剩余内存小于512MB触发保护 sysguard mem_min 512M;3. CPU 亲缘绑定自动绑定 worker 到 CPU 核心worker_cpu_affinity auto;三、静态资源加速concat 资源合并把多个 js/css 一次请求加载减少 HTTP 次数server { listen 80; server_name static.test.com; location ~* \.(js|css)$ { concat on; concat_max_files 10; # 最多合并10个文件 expires 7d; } }访问示例http://static.test.com/1.js,2.js,3.css网关自动合并文件返回。trim 精简 HTML/JS 空白字符、注释location ~* \.(html|js|css)$ { trim on; }四、日志与运维监控1. 异步日志海量访问不阻塞进程http { # 开启异步日志 access_log /usr/local/tengine/logs/access.log main async; }2. reqstat 内置实时流量监控无需安装插件直接访问查看 QPS、耗时、错误码server { listen 8088; location /reqstat { reqstat; } }浏览器访问http://ip:8088/reqstat查看全量流量统计3. 自动生成 X-Request-ID 全链路追踪http { reqid on; log_format main $remote_addr [$time_local] $request $status $request_time $reqid; }日志会带上唯一请求 ID传给后端服务方便排查链路故障。五、SSL/HTTPS 异步优化异步 SSL 握手降低 HTTPS CPU 消耗server { listen 443 ssl async; # async 异步SSLTengine新增 server_name www.test.com; ssl_certificate cert/test.pem; ssl_certificate_key cert/test.key; ssl_protocols TLSv1.2 TLSv1.3; }六、限流增强原生 limit_req 优化http { limit_req_zone $binary_remote_addr zonerate:10m rate100r/s; } server { location / { limit_req zonerate burst20 nodelay; proxy_pass http://backend; } }七、Lua 简单脚本示例预装 Lua不用自行编译修改响应头、简单鉴权场景location /lua_demo { content_by_lua ngx.header[Server] Tengine; ngx.say(hello tengine lua); ; }八、常用启停命令和 Nginx 一致多了模块查看tengine -t # 校验配置 tengine -s reload # 平滑重载 tengine -V # 查看版本编译模块 tengine -m # Tengine特有列出所有加载模块九、Tengine-Ingress 云原生核心优势文字说明无本地配置K8s 场景下 修改路由、域名、证书、后端权重不需要 reload配置热生效长连接不会断开 原生 Nginx Ingress 每次变更都要 reload容易造成短暂连接中断。