Apache is an open-source and free web server software that powers around 40% of websites around the world. The official name is Apache HTTP Server, and it’s maintained and developed by the Apache Software Foundation.
It allows website owners to serve content on the web — hence the name “web server.” It’s one of the oldest and most reliable web servers, with the first version released more than 20 years ago, in 1995.
When someone wants to visit a website, they enter a domain name into the address bar of their browser. Then, the web server delivers the requested files by acting as a virtual delivery man.
What is a Web Server?
File servers, database servers, mail servers, and web servers use different kinds of server software. Each of these applications can access files stored on a physical server and use them for various purposes.
The job of a web server is to serve websites on the internet. To achieve that goal, it acts as a middleman between the server and client machines. It pulls content from the server on each user request and delivers it to the web.
The biggest challenge of a web server is to serve many different web users at the same time — each of whom is requesting different pages. Web servers process files written in different programming languages such as PHP, Python, Java, and others.
They turn them to static HTML files and serve these files in the browser of web users. When you hear the word web server, think of it as the tool responsible for the proper server-client communication.
How Does Apache Web Server Work?
Although we call Apache a web server, it is not a physical server, but rather a software that runs on a server. Its job is to establish a connection between a server and the browsers of website visitors (Firefox, Google Chrome, Safari, etc.) while delivering files back and forth between them (client-server structure). Apache is a cross-platform software, therefore it works on both Unix and Windows servers.
When a visitor wants to load a page on your website, for instance, the homepage or your “About Us” page, their browser sends a request to your server, and Apache returns a response with all the requested files (text, images, etc.). The server and the client communicate through the HTTP protocol, and the Apache software is responsible for the smooth and secure communication between the two machines.
Apache is highly customizable, as it has a module-based structure. Modules allow server administrators to turn additional functionalities on and off. Apache has modules for security, caching, URL rewriting, password authentication, and more. You can also set up your own server configurations through a file called .htaccess, which is an Apache configuration file.
Apache vs. Other Web Servers
Besides Apache, there are many other popular web servers. Each web server application has been created for a different purpose. While Apache is the most widely used, it has quite a few alternatives and rivals.
Apache vs. NGINX
Nginx, pronounced Engine-X, is a newer web server application first released in 2004. As of today, it has gained quite a popularity among website owners. Nginx was created to solve the so-called c10k problem, meaning that a web server that uses threads to handle user requests is unable to manage more than 10,000 connections at the same time.
- Since Apache uses the thread-based structure, owners of traffic-heavy websites may encounter performance problems. Nginx is one of the web servers that address the c10k problem and probably the most successful one.
- Nginx has an event-driven architecture that doesn’t create a new process for each request. Instead, it handles every incoming request in a single thread. This master process manages several worker processes that perform the actual processing of requests. The event-based model of Nginx distributes user requests among worker processes in an efficient way, therefore leading to much better scalability.
- If you need to manage a high-traffic website, Nginx is an excellent choice, as it can do that by using minimal resources. It cannot be a coincidence that it’s used by many high-visibility websites such as Netflix, Hulu, Pinterest, and Airbnb.
- However, for small and medium players, Apache comes with a handful of advantages over Nginx, such as its easy configuration, lots of modules, and a beginner-friendly environment.
Apache vs. Tomcat
Tomcat is a web server also developed by the Apache Software Foundation, thus its official name is Apache Tomcat. It’s an HTTP server as well, however it powers Java applications instead of static websites. Tomcat can run several different Java specifications such as Java Servlet, JavaServer Pages (JSP), Java EL, and WebSocket.
- Tomcat has been created specifically for Java apps, while Apache is a general-purpose HTTP server. You can use Apache together with different programming languages (PHP, Python, Perl, etc.) with the help of the appropriate Apache module (mod_php, mod_python, mod_perl, etc.).
- Although you can use a Tomcat server to serve static web pages as well, it’s less efficient for that purpose compared to the Apache server. For instance, Tomcat pre-loads the Java Virtual Machine and other Java-related libraries you won’t need on most websites.
- Tomcat is also less configurable compared to other web servers. For example, to run WordPress, the best choice is a general-purpose HTTP server such as Apache or NGINX.
Apache Pros and Cons
An Apache web server can be an excellent choice to run your website on a stable and versatile platform. However, it also comes with some disadvantages you need to pay attention to.
- Open-source and free, even for commercial use.
- Reliable, stable software.
- Frequently updated, regular security patches.
- Flexible due to its module-based structure.
- Easy to configure, beginner-friendly.
- Cross-platform (works on both Unix and Windows servers).
- Works out of the box with WordPress sites.
- Huge community and easily available support in case of any problem.
- Performance problems on extremely traffic-heavy websites.
- Too many configuration options can lead to security vulnerabilities.
So, What is Apache?
Apache is one of the most popular web servers that allows you to run a secure website without too much of a headache. It’s the most frequent choice of solopreneurs and small businesses that want a presence on the web.
You can install a WordPress website on an Apache webserver without any customization. Besides, Apache works seamlessly with many other content management systems (Joomla, Drupal, etc.), web frameworks (Django, Laravel, etc.), and programming languages. This makes it a solid pick for all types of web hosting platforms, such as VPS or shared hosting.