Apache Web Server is one of the most widely used web servers on the Internet. Understanding its basics and functionality is essential for anyone working in web development, system administration, or server management.
In this article, we will cover 25 interesting Apache interview questions along with their answers, helping you learn new things about Apache that you may not have known before.
1. What is Apache Web Server?
The Apache HTTP Server is one of the most popular, powerful, and open-source web servers used to host websites by serving web files over a network.
It operates using the HTTP (Hypertext Transfer Protocol), which establishes a standard for communication between web servers and client-side browsers.
Apache supports features such as SSL (Secure Sockets Layer), CGI (Common Gateway Interface) scripts, Virtual Hosting, and many others.
2. How to Check the Apache Version?
To check if Apache is installed and see its version, you can run the following command in your terminal:
apache2 -v # For Debian-based systems httpd -v # For RedHat-based systems
This will display the version of Apache installed on your system, along with additional information like the build date.
How to Identify Apache’s Running User and Configuration File?
Apache runs as the “www-data
” user on Debian-based systems and “apache
” on RedHat-based systems.
The main configuration file for Apache is usually located at:
/etc/apache2/apache2.conf (for Debian-based systems) /etc/httpd/httpd.conf (for RedHat-based systems)
4. On Which Port Does Apache Listen for HTTP and HTTPS?
Apache listens on the following default ports:
- HTTP (Unsecured): Port 80
- HTTPS (Secured): Port 443
These ports can be configured in the Apache configuration files, typically found in /etc/httpd/conf/httpd.conf (for RHEL-based systems) or /etc/apache2/ports.conf (for Ubuntu-based systems).
5. How Do You Install Apache Server on Linux?
To install Apache on different Linux distributions, you can use the following commands:
sudo apt install apache2 # For Debian-based systems sudo yum install httpd # For RedHat-based systems
After installation, you can access the Apache server by opening a web browser and navigating to http://localhost
or http://your-server-ip
. You should see the default Apache welcome page if the installation was successful.
6. Where to Find Configuration Directories for Apache?
You can find Apache’s configuration directories in:
/etc/apache2/ # For Debian-based systems /etc/httpd/ # For RedHat-based systems
These directories hold configuration files for modules, virtual hosts, and general server settings.
7. Can Apache be Secured with TCP wrappers?
Yes, Apache can be secured using TCP wrappers, which provide an additional layer of security by controlling access to services based on IP addresses.
Here’s how to configure TCP wrappers to secure Apache:
Most Linux distributions come with TCP wrappers pre-installed. To check if it is installed, you can look for the tcpd binary:
which tcpd
If it’s not installed, you can install it using your package manager:
sudo apt install tcpd # For Debian-based systems sudo yum install tcp_wrappers # For RedHat-based systems
TCP wrappers use two configuration files:
/etc/hosts.allow
– This file specifies which hosts are allowed to access services./etc/hosts.deny
– This file specifies which hosts are denied access.
First, open /etc/hosts.allow
file and add a line to allow Apache (httpd) access:
httpd: ALL
For more restrictive access, specify particular IPs or subnets:
httpd: 192.168.1.0/24
Next, open /etc/hosts.deny
file and add the following line to deny all others.
httpd: ALL
After making changes to the TCP wrappers configuration, restart Apache to apply the changes:
sudo systemctl restart apache2 # For Debian-based systems sudo systemctl restart httpd # For RedHat-based systems
8. How to Change the Default Apache Port?
To change Apache’s default port, modify the Listen
directive in the configuration file (/etc/apache2/ports.conf or /etc/httpd/conf/httpd.conf):
Listen 8080 # Change 80 to 8080 for example
Apache will start listening on port 8080 instead of the default 80.
9. Can You Host Two Apache Web Servers on a Single Server?
Yes, you can run two Apache servers on a single machine, but they must listen on different ports.
Here are some key points to consider when setting this up:
- Each Apache instance must listen on a different port.
- Each Apache server will need its own configuration files.
- Each Apache instance has a unique document root where its web files are stored.
- Each Apache instance must have a separate systemd service file to manage the service.
By carefully configuring each instance, you can successfully host two Apache web servers on a single server, allowing you to manage different websites or applications efficiently.
10. What Do You Mean by DocumentRoot of Apache?
In Apache, the DocumentRoot is a directive that specifies the directory from which the web server serves files. Essentially, it defines the top-level directory where your website’s files are stored.
The DocumentRoot is typically defined in the Apache configuration files or within virtual host configuration files.
DocumentRoot /var/www/html
The default DocumentRoot for Apache on many distributions is often /var/www/html
.
11. How to Host Files in a Different Folder Using Apache’s Alias?
Apache’s Alias
directive allows you to serve files from a directory that is not part of the main document root, which is useful for organizing files and improving security by keeping certain files out of the publicly accessible web directory.
To create an alias, use the following syntax:
Alias /files/ /var/files/
This means users can access /var/files/
using the /files/
URL.
12. What do You Understand by “DirectoryIndex”?
The DirectoryIndex
is a directive used in web server configurations to specify the default file that should be served when a directory is requested.
If a user visits a URL that points to a directory instead of a specific file, the server will look for the files listed in the DirectoryIndex
directive and serve the first one it finds.
For example:
DirectoryIndex index.html index.php
If both index.html
and index.php
exist, Apache will serve index.html
first.
13. How to Disable Directory Listing When an Index File Missing?
To disable directory listing, add the following line to your configuration file (e.g., httpd.conf
or apache2.conf
):
Options -Indexes
This directive disables directory listings. When there’s no index file, users will see a “403 Forbidden” error instead of the directory contents.
14. What Are the Different Log Files of Apache?
Apache Web Server generates several log files that are essential for monitoring and troubleshooting.
Here are the main log files you might encounter:
access.log
– Records all requests processed by the server.error.log
– Captures error messages and warnings generated by the server.
Here’s a breakdown of the different log files and their locations:
Access Log:
Ubuntu: /var/log/apache2/access.log RHEL: /var/log/httpd/access_log
Error Log:
Ubuntu: /var/log/apache2/error.log RHEL: /var/log/httpd/error_log
15. What Does “Connection Reset by Peer” Mean in Apache?
The error message “connection reset by peer” indicates that a network connection was abruptly closed by the remote host (the “peer“) you were communicating with.
This can occur for various reasons, including:
- Temporary problems with the network, such as packet loss or disconnections.
- The server might have a timeout setting that closes inactive connections or limits the number of allowed connections.
- An error in the server application could cause it to crash or refuse the connection.
- Firewalls or security software may terminate connections they deem suspicious.
- The server could be overwhelmed with requests, causing it to close connections unexpectedly.
In logs, this error typically indicates that the client (your application or device) tried to send or receive data after the server had already closed the connection.
16. What is Virtual Host in Apache and How to Configure it?
A virtual host in Apache is a method that allows you to host multiple websites (domains) on a single server. By using virtual hosts, you can serve different content based on the domain name used in the request, which is beneficial for optimizing resources and managing multiple sites easily.
Types of Virtual Hosts:
- Name-based Virtual Hosts: These use the hostname (domain name) to differentiate between sites. Most common method.
- IP-based Virtual Hosts: Each website has a different IP address. Less common due to the scarcity of IP addresses.
To configure virtual host, you need to create a new configuration file for your website with the following content:
<VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html <Directory /var/www/example.com/public_html> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
17. What’s the Difference Between <Location> and <Directory>?
In Apache, <Location>
and <Directory>
are two different directives used to control access and configuration for different parts of your web server.
Here’s a breakdown of their differences:
<Location>
: Applies to URLs and is independent of the physical directory structure.<Directory>
: Applies to file system directories.
Example of <Location>
:
<Location /admin> AuthType Basic AuthName "Restricted Access" Require valid-user </Location>
Example of <Directory>
:
<Directory /var/www/html> AllowOverride All Require all granted </Directory>
18. What’s the Difference Between Worker and Prefork MPM?
The main difference between the Worker and Prefork Multi-Processing Modules (MPMs) in Apache HTTP Server lies in how they handle requests and manage processes and threads.
Here’s a simplified breakdown:
- Worker MPM: Uses multiple threads for handling requests, providing better performance.
- Prefork MPM: Creates a separate process for each request, providing better isolation but using more memory.
19. How to Use LimitRequestBody to Limit File Uploads on Apache?
The LimitRequestBody directive is used to set the maximum allowed size for HTTP request bodies (like file uploads):
<Directory /var/www/html/uploads> LimitRequestBody 10485760 </Directory>
Replace /var/www/html/uploads
with the path to your upload directory. The size is specified in bytes (1 MB = 1,024 × 1,024 bytes).
20. What is mod_perl and mod_php?
mod_perl and mod_php are modules for Apache that allow it to run Perl and PHP scripts, respectively, directly on the server.
- mod_perl is an Apache module that embeds a Perl interpreter into the web server, which allows Perl scripts to run faster because they can be executed within the server’s process space.
- mod_php is an Apache module that integrates the PHP interpreter into the Apache server, which allows PHP scripts to be executed directly by the server.
21. What is mod_evasive?
mod_evasive is an Apache module designed to provide protection against Denial of Service (DoS) attacks and brute force attacks. It helps web servers manage and limit the number of requests a user can make within a certain time frame.
Here’s a brief overview of its features:
- It restricts the number of requests from a single IP address over a specified period, helping to prevent server overload.
- The module can detect when an IP address is making too many requests too quickly, signaling a potential attack.
- If the request limits are exceeded, mod_evasive can temporarily block the offending IP address or return an error message.
22. What is Loglevel Debug in Apache?
In Apache, LogLevel Debug is a configuration directive that controls the amount and type of information that Apache logs, which is useful for troubleshooting and debugging issues.
Apache supports several log levels, such as:
- Emerg: System is unusable.
- Alert: Action must be taken immediately.
- Crit: Critical conditions.
- Err: Error conditions.
- Warn: Warning conditions.
- Notice: Normal but significant conditions.
- Info: Informational messages.
- Debug: Debug-level messages.
23. What’s the Use of mod_ssl and How SSL Works?
mod_ssl is an Apache module that enables SSL (Secure Sockets Layer) and TLS (Transport Layer Security) protocols on Apache web servers, which allows websites to encrypt data transferred between the server and clients, ensuring secure communication.
Here’s a breakdown of how it works:
- To use SSL/TLS, obtain an SSL certificate from a trusted Certificate Authority (CA) to verify your website’s identity.
- Enable the mod_ssl module on your Apache server using a package manager or by editing the configuration files.
- When a client requests a secure connection, the server responds by sending its SSL certificate.
- After the handshake, all data exchanged between the client and server is encrypted, ensuring confidentiality and integrity.
24. What are .htaccess files, and How Are They Used?
.htaccess
files are configuration files used to control the behavior of the Apache server at a directory level. They allow you to set various configurations, such as URL redirection, access control, and custom error pages, without editing the main configuration file.
For example, you can use a .htaccess
file to redirect users from an old URL to a new one:
Redirect 301 /old-page.html /new-page.html
25. How Can You Enable and Disable Modules in Apache?
You can enable or disable modules in Apache using the a2enmod and a2dismod commands on Debian-based systems.
For example, to enable a module (e.g., rewrite):
sudo a2enmod rewrite
To disable a module (e.g., rewrite):
sudo a2dismod rewrite
These questions cover various important topics regarding Apache web server management, configuration, and security, helping you to be well-prepared for any Apache-related interview!
my httpd service is not starting
error =>> control process exists with error code
i read in a rhel 6 book that HTTPD service runs by default by following credentials —-
User apache
Group apache
so please clarify ur question no . 3 in this post where u mentioned “nobody user”
@Krish,
You’re absolutely correct, yes the Apache runs as user apache:apache, sorry for question 3, needs to be corrected..
This blog was pretty useful covering the most part of interview section. Thank you for posting..:)
@Siva,
Thanks for finding this blog very useful..
may thanks for sharing thoses questions.
it is really helpful
its really very good
thank you thank you very much to
Tarunika Shrivastava
prakash k
Hey!
Very Nice Document Really Appreciated. And you are the first girl I have seen in the Linux Admin side.
I find one mistake there are 3 types of virtual hosting
1) Name Based
2) Ip Based
3) Port Based
For Rosehosting answer is:
I think your question is not web servers it’s websites if yes so here is the answer
In Ip based we can configure multiple websites with the concept of virtual hosting.
Also we can configure multiple websites with single ip but the traffic will hit to the single ip so if you have multiple ip address then that would be better.
Regards,
Mahesh
Can we have two Apache Web servers on a single machine?
If you have two different IP addresses, one Apache installation can listen to port 80 on the first IP address, and the second Apache installation to port 80 on the second IP address.
well elaborated !!
got many points cleared
hoping some elaborated discussion regarding SElinux :)
I enjoyed reading the article, keep up the good work :-)
Just one over-sight:
Under the last section “How SSL works with Apache” it looks like you’ve outlined how to generate an SSL certificate, rather than how Apache handles HTTPS requests.
yes jack,you are absolutely rt.