alibaba/ tengine
View on GitHubA high-performance web server and reverse proxy, 100% compatible with nginx.
A high-performance web server and reverse proxy, 100% compatible with nginx.
Tengine is a high-performance web server and reverse proxy originated by Taobao, the largest e-commerce website in Asia. It offers HTTP/3, Kubernetes Ingress support, zero-downtime dynamic configuration, active upstream health checks, and NTLS/TLCP (SM2/SM3/SM4), while remaining 100% compatible with nginx. Tengine has proven to be very stable and efficient on some of the top 100 websites in the world, including taobao.com and tmall.com.
Tengine has been an open source project since December 2011. It is being actively developed by the Tengine team, whose core members are from Taobao, Sogou and other Internet companies. Tengine is a community effort and everyone is encouraged to get involved.
Multi-arch (amd64 + arm64) images with the full feature set -- Tongsuo (NTLS), xquic (QUIC/HTTP-3) and Lua -- are published on every release:
docker pull ghcr.io/alibaba/tengine:latest # Debian based
docker pull ghcr.io/alibaba/tengine:latest-alpine # Alpine based, smaller
docker run --rm -p 8080:80 ghcr.io/alibaba/tengine:latest
The server runs as /usr/sbin/tengine with /etc/tengine/tengine.conf; drop your own server blocks into /etc/tengine/conf.d/.
Every release ships .rpm, .deb and .apk packages for the mainstream distributions (RHEL/Rocky/Alma/Anolis/openEuler/SLES, Debian/Ubuntu, Alpine) on both x86_64 and aarch64, attached to the release page:
dnf install https://github.com/alibaba/tengine/releases/download/3.2.0/tengine-3.2.0-<ts>.el9.x86_64.rpm
These packages install alongside a distribution nginx without conflicting. See packages/build/README.md for the exact feature set, how to build them yourself, and how the container images are produced.
Tengine can be downloaded at https://tengine.taobao.org/download/tengine.tar.gz. You can also checkout the latest source code from GitHub at https://github.com/alibaba/tengine
To install Tengine, just follow these three steps:
./configure
make
sudo make install
By default, it will be installed to /usr/local/tengine. Everything is named after Tengine, which matches the layout used by the .rpm/.deb/.apk packages and the container images:
| | Default path |
|---|---|
| binary | /usr/local/tengine/sbin/tengine |
| configuration | /usr/local/tengine/conf/tengine.conf |
| pid file | /usr/local/tengine/logs/tengine.pid |
| error log | /usr/local/tengine/logs/error.log |
| access log | /usr/local/tengine/logs/access.log |
| dynamic modules | /usr/local/tengine/modules |
You can use the '--prefix' option to specify the root directory, or --sbin-path, --conf-path, --pid-path, --error-log-path and --http-log-path to place the individual files.
If you want to know all the 'configure' options, you should run './configure --help' for help.
Upgrading from 3.1.0 or earlier. Those releases installed to /usr/local/nginx as
sbin/nginxdriven byconf/nginx.conf. Because 3.2.0 writes to different paths,make installdoes not replace that install -- the old binary stays on disk and keeps serving traffic, and running it still reports the old version, which easily reads as "the upgrade did not take effect". After switching over, stop and remove the old install, and update any systemd unit, init script or log rotation config still pointing at the old paths.configureprints a warning when it finds an install at/usr/local/nginx/sbin/nginx.To keep the previous layout instead, pass the old paths explicitly:
./configure --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/logs/nginx.pid
A plain ./configure builds without Tongsuo, xquic and Lua -- those need their own libraries. To reproduce the full feature set of the released packages and images, use the packaging helpers:
packages/build/fetch-deps.sh # download pinned sources
packages/build/build-deps.sh --libdir /usr/lib/tengine
. dist/deps-build/deps-env.sh
./configure $(sh packages/build/configure-args.sh) \
--with-cc-opt="-Wno-error" \
--with-ld-opt="$(sh packages/build/configure-args.sh --print-ld-opt)" \
--with-openssl-opt="$(sh packages/build/configure-args.sh --print-openssl-opt)"
make
The homepage of Tengine is at https://tengine.taobao.org/ You can access https://tengine.taobao.org/documentation.html for more information.
https://github.com/alibaba/tengine/issues
Dingtalk user group: 23394285
No comments yet. Set the tone — say what you would want to know.