In the earliest versions, APISIX used Openresty as the runtime, but
OpenResty often failed to meet APISIX's scalability needs. To solve
this problem, we built apisix-base and have been running on it for
over a year.


For example, these features can only run in the apisix-base environment:

* upstream.tls: Enables secure communication between APISIX and
upstream servers.
* etcd.tls: Enables secure communication between APISIX and etcd clusters.
* xrpc/redis: The Redis protocol support allows APISIX to proxy Redis
commands, and provide various features according to the content of the
commands.
* Dubbo proxy: Supports proxying Apache Dubbo requests.
* client-control Plugin: The client-control Plugin can be used to
dynamically control the behavior of NGINX to handle a client request,
by setting the max size of the request body.
* Gzip Plugin: The gzip Plugin dynamically sets the behavior of gzip in Nginx.
* Wasm Plugin: Allows loading and running WebAssembly modules in APISIX.
* Prometheus Plugin: Optimizing long tail requests caused by excessive
data volume in metrics.
* proxy-control Plugin: The proxy-control Plugin dynamically controls
the behavior of the NGINX proxy.
* Real-ip Plugin: The real-ip Plugin is used to dynamically change the
client's IP address and port as seen by APISIX.


Although we still retain compatibility with OpenResty, in practice,
the incompatibility issues between APISIX and OpenResty are often
unresolved. Our usual approach is to skip these issues. Considering
that APISIX will continue to add new features and bug fixes in the
future, these features are often not supported in native OpenResty. At
the same time, we also need to consider compatibility with OpenResty,
which requires extra maintenance work in testing and development.


By dropping support for OpenResty, we can remove extra CI jobs and
version checks, making the code simpler.

What about your opinion?

Reply via email to