The Apache Web Server, commonly called Apache is an open source web server developed and maintained by the open source developer community under the auspices of the Apache Software Foundation. The majority of Apache HTTP Server runs on Linux distributions, but the current version also runs on Microsoft Windows, OpenVMS, and a wide variety of Unix-like systems.
Originally based on the NCSA HTTPd server, Apache development began in early 1995 after development for NCSA HTTPd came to a halt. Apache played a key role in the early growth of the World Wide Web (WWW), quickly overtaking NCSA HTTPd as the dominant HTTP server.
In 2009 it became the first web server software to serve more than 100 million websites. As of January 2021, Netcraft estimates that Apache serves 24.63% of the million busiest websites, while Nginx serves 23.21%, and Microsoft is in third place with 6.85%. Meanwhile, according to W3Techs, Apache was ranked first at 35.0%, Nginx second at 33.0%, and Cloudflare Server third at 17.3%.
Apache supports a wide variety of features, many of which are implemented as modules that extend the core functionality. For example, from authentication schemes to supporting other server programming languages such as Perl, Python, Tcl and PHP. A popular compression method in Apache, mod_gzip, is implemented to help reduce the size (weight) of web pages served over HTTP.
Virtual hosting allows a single Apache installation to serve many different websites. For example, a single computer with one Apache installation can simultaneously serve example.com, example.org, example.edu, etc.
Apache features configurable Error Message, DBMS-based database authentication, Content Negotiation, multiple graphical user interfaces (GUI), supports password authentication, and digital certificate authentication.
Some of the other Apache features:
- Dynamic module loading
- Multiple MPM modes. Event-based / Async, Threaded and Prefork.
- Highly scalable (easily handles over 10,000 simultaneous connections)
- Static file handling, file indexing, automatic indexing, and content negotiation
- .htaccess per directory configuration support
- Reverse proxy with caching
- Load balancing
- Various load balancing mechanisms
- Fault tolerance and failover with automatic recovery
- WebSocket, FastCGI, SCGI, AJP and uWSGI support with caching
- Dynamic configuration
- TLS / SSL with SNI and OCSP stapling support, via OpenSSL or wolfSSL.
- Name and IP address based virtual server
- IPv6 compatible
- HTTP / 2 support
In terms of performance, instead of implementing a single architecture, Apache provides various MultiProcessing Modules (MPMs), which allow it to run in either process-based, hybrid (process and thread) mode and event mode to suit specific infrastructure needs.
Therefore, the choice of MPM and configuration is very important. Where performance compromises must be made, Apache is designed to reduce latency and increase throughput in order to handle more requests, thus requiring consistent and reliable processing of requests within a reasonable time frame.
For delivering static pages, the Apache 2.2 series is considered much slower than nginx and varnish. To solve this problem, Apache developers create MPM Events, which mixes the use of multiple processes and multiple threads per process in an asynchronous event-based loop. This architecture is implemented in the Apache 2.4 series, for performance, according to Jim Jagielski and several independent sources, at least it is on par with other event-based web servers.