Apache HTTP Server
Apache HTTP Server is one of the most widely used web servers deployed to display website content; processing, delivering, and storing website pages. A web server is a type of computer software and its underlying hardware that accepts requests via HTTP or its secure variant HTTPS.
In this blog, we explore open source Apache HTTP Server, its history, features, use cases, and some available alternatives. Discover what Apache HTTP Server can do for your organization.
- What Is Apache HTTP Server?
- Apache HTTP Server Project History
- Apache HTTP Server Versions and Lifecycle
- Apache HTTP Server Key Features
- Apache HTTP Server Use Cases
- Apache HTTP Server Alternatives
- Apache Server vs. NGINX
- Final Thoughts
What Is Apache HTTP Server?
Apache HTTP Server is a free, open source, and feature-rich web server that is widely used across the world.
Apache HTTP Server is also the “A” in the ubiquitous LAMP stack (Linux, Apache, MySQL, PHP). Its lack of configuration needed to start working and high level of adoption over the years has led Apache HTTP Server to become one of the most-used web servers out there. A few long-time users of Apache HTTP Server include META, IBM, Adobe, and Linkedin.
Apache HTTP Server Project History
While some trace the history of Apache HTTP Server to its first public release in 1995, its roots go further back. It was created in the early 1990s by Rob McCool at the National Center for Supercomputing Applications, University of Illinois, Urbana-Champaign. Other staff started to use it, and after McCool left in 1994, Apache continued to grow organically amongst the staff. In the spring of 1995, they formed the Apache Group and publicly released Apache Web Server in April of 1995.
From that point, the web server continued to grow and in 1999, the Apache Group decided to form the Apache Web Foundation to provide support for the web server. This group would go on to create and alter the Apache HTTP Server license, where today it is GPLv3 compatible. Across the 28 years of public release, Apache HTTP Server has seen wide adoption amongst the community, which has created quite a large number of features for the web server. The foundation has said the name “Apache” was chosen out of respect for the various First Peoples referred to as “Apache”.
Apache HTTP Server Versions and Lifecycle
Over its decades of development, Apache HTTP Server has seen a number of updates, improvements, and new feature sets. While anyone can make their own branch, official versions are released per vote by the Apache HTTP Server Project. Each new version is headed by a release manager (RM) who is responsible for shepherding a list of commits into a release candidate. These are the unsung heroes who dedicate large amounts of time to the project. Release candidates are voted on by the committing members of the project, a simple majority allows a candidate to move forward as an official release.
Questions About Apache HTTP Server?
Apache HTTP Server Features and Capabilities
Apache HTTP Server is built on a modular architecture, with a core of common basic functions. On top of this is a series of modules to extend the functionality. An overview of all the sundry modules available for Apache HTTP Server is beyond the scope of this post, but a few of the most important ones are:
MPM Module (The Multi-Processing Module)
This is more appropriately thought of as a collection of modules that dictate how Apache HTTP Server carries out its base responsibilities of:
- Binding to network ports
- Accepting requests
- Dispatching children to handle requests
These appear as other Apache httpd modules, however, differ in one manner. Only a single MPM can be loaded onto a server at any time. Different MPMs can allow clean and easy support for a variety of operating systems (OS). Beyond Linux and other Unix-like systems, there is mpm_winnt, which can use native features without requiring the POSIX layer that was needed back in Apache httpd 1.3.
As of version 2.4.57, Apache HTTP Server now features run time loadable MPMs, as well as full support of the event MPM.
Allow Methods (mod_allowmethods)
This nifty module introduced with v2.3 gives easy control over what HTTP methods the server will accept. A very common configuration is to simply disallow POST requests. Look for further updates to this in version 2.5.1.
Per-Request Configuration Sections
While not a module, this handy feature has been added to the core feature set since v2.2. It enables you to set conditional responses (If ELSEIF, ELSE) on a per-request basis. In addition, as of 2.4.26 you can now set up nested condition sets.
Increased Asynchronous Read/Write Support
Another recent core feature update is enhanced support for async read/write operations for supporting MPMs. This feature is expected to receive further upgrades in 2.5 in the AsyncFilter Directive.
Web Server vs Application Server: What's the Difference?
Apache HTTP Server Use Cases
Apache Web Server runs out of the box with very little configuration changes. On top of this, Apache HTTP Server can scale to handle very large amounts of traffic with minimal configuration changes. This leads Apache HTTP Server to be applicable to a wide variety of situations. Whether in use for a small machine serving a single site or supporting much larger demand with multiple load balancers.
Beyond the quantity of requests your web server is expected to handle, Apache HTTP Server is also adapted for running on a number of platforms. While most frequently associated with Linux boxes (LAMP), Apache HTTP Server also supports several other operating systems. This includes:
- Microsoft Windows - through the mpm_winnit MPM. This module allows use of native Windows networking features, an improvement over older versions of Apache HTTP Server when a POSIX layer was required
- VMS (officially OpenVMS)
- Multiple Unix-like environments, such as BSD, Solaris, and Mac OS X
Apache HTTP Server Alternatives
While Apache HTTP Server is a well-known web server, it is far from the only option out there. Other popular web servers can fall into two categories – those with permissive licensing (a license like Apache or BSD), and those which are proprietary and not free to use.
Beyond Apache HTTP Server, other popular non-proprietary web servers include Lighttpd, NGINX, and OpenBSD. A couple of the more used proprietary web servers are IBM Websphere and Oracle’s WebLogic.
Apache HTTP Server vs. NGINX
NGINX is often viewed as the direct competitor to Apache HTTP Server. It’s hard to say one is always better than the other, depending on your use case. NGINX is optimized for efficiency over features. When serving static content, its improved caching gives a faster response time over Apache HTTP Server, which uses a file-based approach. However, when serving dynamic content, Apache HTTP Server comes out on top due to its ability to process it internally. NGINX lacks a built-in content processing capacity, and instead relies on external processors like PHP-FPM.
One other difference is how they handle directory access and configuration. Apache HTTP Server allows per-directory configuration through .htaccess files, unlike NGINX which doesn’t support directory level configuration. However, this feature with Apache HTTP Server always brings in the additional management needed for using .htaccess files.
A last point to consider is modules. Both Apache Web Server and NGINX offer a suite of official and third-party modules. However, Apache HTTP Server stands out here due to its ability to dynamically load modules. This feature is only available through a proprietary version of NGINX.
Apache HTTP Server is widely used to power web content and offers features and capabilities to support modern website development and user experience. Organizations often use Apache HTTP Server due to how easy it is to configure, its ability to scale to large demands, its longevity, and its stability. Managing an open source web infrastructure requires resources and technical expertise. Many organizations choose to outsource their web infrastructure support and maintenance to free up resources to focus on higher business value work.
Need Help With Your Web Infrastructure?
OpenLogic provides SLA-backed, 24/7/365 technical support and services for Apache Server, ActiveMQ, and NGINX. Our enterprise architects can help configure, improve, and maintain your web infrastructure, as well as train your team on key technologies.
- On-Demand Webinar - The State of Open Source Web App Development
- Upcoming Webinar - Open Source Web Infrastructure: Current Ecosystem and Trends
- Blog -Apache vs. NGINX: Which Web Server Is Better?
- Blog - Best Practices for Web Server Security
- Guide - Overview of Open Source Web Infrastructure