An open source web server is a public-domain software designed to deliver web pages over the World Wide Web. Like proprietary web server software, it runs on a computer that is connected to the internet uniquely identified by an IP address. A server hosting a website receives URL requests for a resource or web page from clients using their browser. It looks for the webpage from its directory, fetches it, and sends the webpage over to the client’s browser. If unable to find the resource, it sends an error message instead. Communication between the client and server is facilitated using hypertext transfer protocol (http) or its secure version, https.
The source code of open source web servers can be viewed, copied, altered, and shared without charge by accepting the terms of its license. Terms can vary from software to software, but open source licenses generally grant users permission to use the software for any purpose. Open source web servers are commercial-grade servers that can be used by an individual, a group of people, or a whole organization. It can host multiple websites and provide directories for static and dynamic web content. Open source web servers can also include some or all of the following features:
- Support file uploads and downloads using file transfer protocol (ftp)
- Save user input submitted in web forms
- Temporary storage or cache of web documents
- Software-based load balancer for web traffic
- Act as reverse proxy server
- Proxy for an email server
- Serves as a CGI and API gateway
- Provide security features, for example, against DDoS attack
- Optimize hardware resources
- Support other communication protocols
According to recent surveys of web server market share, the top two open source web servers are Apache web server and Nginx, whose combined shares capture more than 65 percent. Microsoft’s proprietary IIS web server comes next, followed by another commercial enterprise product from LiteSpeed Technologies. However, the same company offers an open source web server version called OpenLiteSpeed.