What is a web server and how to choose it
What is a Server
The term “server” can be a bit complex, as it applies to various fields.
It can refer to Hardware, Software, or both working together.
When referring to Hardware, it speaks of the devices that contain information.
When we talk about Software, we refer to the programs that manage the same information stored on these devices.
Any computing equipment capable of storing information and running the software to manage it can be a physical server (hardware).
How Does a Web Server Work
When a web browser, like Google Chrome or Firefox, needs a file hosted on a web server, the browser will request the file via HTTP. When the request is received by the web server, the HTTP server will accept the request, find the content, and send it back to the browser via HTTP.
More specifically, when a browser requests a page from a web server, the process follows a series of steps. First, a person will specify a URL in the web browser’s address bar. Then, the web browser will obtain the IP address of the domain name, either by translating the URL through DNS (Domain Name System) or by looking in its cache. This will lead the browser to a web server. The browser then requests the specific file from the web server via an HTTP request. The web server will respond by sending the requested page back to the browser, again, via HTTP. If the requested page does not exist or if something goes wrong, the web server will respond with an error message. The browser can then display the web page.
Multiple domains can also be hosted on a single web server.
Examples of Web Server Uses
Web servers often come as part of a broader package of Internet and intranet-related programs used for:
- Sending and receiving emails.
- Downloading file requests using File Transfer Protocol (FTP).
- Building and publishing web pages.
Many basic web servers also support server-side scripting, used to employ scripts on a web server that can personalize the client’s response. Server-side scripting runs on the server machine and typically has a broad set of functions, including database access. The server-side scripting process will also use Active Server Pages (ASP), Hypertext Preprocessor (PHP), and other scripting languages. This process also allows for the dynamic creation of HTML documents.
Depending on the size and complexity of the information to be managed, one must have either a local physical server or a remote one. This decision should be made by an expert. If opting for a physical server, it’s important to remember that it will also require an expert to choose it according to the needs, install it, maintain it, and respond to the multiple requirements involved in having it.
However, it is increasingly easier to have a sufficiently powerful and robust server in the cloud, without incurring the many expenses of having an on-site one.
When considering having a server in the cloud, the key question arises:
How to Choose the Right Server for Me or My Company
The first thing to know is how the existing servers are classified according to the service they provide. This is thanks to the software they have installed.
There are file servers, print servers, proxy servers, backup servers, database servers, among others. But the most common is the one that hosts websites, known as a Web Server or Web HTTP Server.
A web server or HTTP server is a program hosted on a physical server that offers a response to a request from the requester’s side, whom we can call a client; or vice versa, making bidirectional or unidirectional connections. This can be done in any language or application. The code received by the client is rendered by a web browser. This transmission follows a protocol that is usually HTTP (hence the name HTTP Server).
In simpler terms, when we perform a search on the Internet, our browser extracts information from external servers, where websites we can visit are hosted. This information, hosted there, is translated into a simple language by that same browser and is what we see on our device (computer, laptop, cellphone, tablet, etc.)
Now, being us who will offer the information, it is very important to know which web server to choose to host our website, our services, or our information.
There are thousands of offers on the net talking about free hosting or very low-cost hosting. Hosting is nothing more than the option of hosting our information (in the form of a website, for example) on a server that is not ours.
However, these options, which at first may seem very captivating due to being cheap, can turn out to be very costly, as the service they offer is not very robust.
Firstly, a server requires continuous maintenance. For a website to be available 24/7 and fully fulfill its function as a permanent virtual branch, the place where it is hosted must always be available. In addition, it must be secure. It’s possible that digital pirates could take our information stored there, including our clients’ information, and ask for its release in exchange for something, like money, for example.
There are also people who do it just to demonstrate their computer skills. Or to sell through other means. In any case, security is essential and must be preserved by professionals who spare no expense in this service.
Finally, there is support. Free hosting sites are places that have a huge flow of customers, so they do not have permanent or personalized customer service lines, and their responses to difficulties with the sites are, in most cases, generic or from frustrating pre-programmed bots. In addition, in the fine print of their contracts, in many cases, they are free from any responsibility that may go beyond the basic part of the service.
Common Servers in the Market
There are several common web servers available, including:
1. Apache HTTP Server
Apache HTTP Server, developed by the Apache Foundation, is one of the most popular web server software globally. It’s highly admired for its versatility, robustness, and performance. Apache supports a variety of features, many implemented as compiled modules which extend its core functionality. These capabilities include server-side programming language support, authentication schemes, SSL and TLS support, URL rewriting, custom log files, and filtering support. Its ability to work on a wide range of operating systems makes it highly adaptable for different environments.
2. Microsoft Internet Information Services (IIS)
Microsoft IIS is an extensible web server created by Microsoft, primarily for use with Microsoft Windows. It is known for its integration with Windows NT-based operating systems and supports various Windows authentication schemes. IIS also offers administrative tools for server management and tools for application development, including ASP.NET. It’s known for its security features, including automatic certificate management and integration with Microsoft’s ecosystem, making it a preferred choice for Windows-centric environments.
Nginx, pronounced as “Engine-X,” stands out for its high performance, stability, rich feature set, simple configuration, and low resource consumption. Unlike traditional servers, Nginx doesn’t rely on threads to handle requests. Instead, it uses a much more scalable event-driven (asynchronous) architecture. This architecture makes it extremely efficient and capable of handling thousands of concurrent connections. It’s commonly used for load balancing and as a reverse proxy, in addition to being a web server.
Lighttpd is known for its speed and efficiency, designed to combat server load spikes with minimal memory footprint. This makes it an excellent solution for servers suffering from load problems. It offers fast CGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more features, while being optimized for high-performance environments. Lighttpd is an ideal choice for websites that require high performance under tight resource constraints.
5. Sun Java System Web Server
Sun Java System Web Server, from Sun Microsystems, is optimized to deliver high-volume web traffic and is known for its scalability, security, and extensibility. It supports various features like JavaServer Pages (JSP), Java servlets, and Java web services. This server is suitable for both static and dynamic content and is often used in combination with Java-based web applications. It’s designed to handle the needs of medium to large-scale websites and enterprise-level web applications.
Each of these servers has unique strengths and capabilities, making them suitable for various uses depending on the specific needs of a website or application.
Leading web servers include Apache, Microsoft Internet Information Services (IIS), and Nginx, pronounced engine X. Other web servers include Novell’s NetWare server, Google’s web server (GWS), and IBM’s Domino server family.
Considerations for choosing a web server include how it works with the operating system and other servers; its ability to handle server-side programming; security features; and the publishing, searching, and site-building tools that come with it. Web servers can also have different configurations and default settings. To create high performance, a web server with high capacity and low latency will help.
Web Server Security Practices
There are many security practices that people can implement when using a web server to have a safer experience. Some examples of security practices include processes like:
- A reverse proxy, designed to hide an internal server and act as an intermediary for traffic originating on an internal server.
- Restricting access through processes such as limiting the web host’s access to infrastructure machines or using Secure Socket Shell (SSH).
- Keeping web servers patched and up-to-date to help ensure that the web server is not vulnerable to vulnerabilities.
- Network monitoring to ensure that there is no unauthorized activity.
- Utilizing a firewall and SSL, as firewalls can monitor HTTP traffic while having a secure sockets layer (SSL) can help keep data secure.
Juan Esteban Yepes