Web Server
Definisi dan Fungsi
Web server adalah perangkat lunak (software) yang bertugas menerima permintaan (request) dari klien melalui protokol HTTP/HTTPS dan mengirimkan kembali respons berupa sumber daya web seperti halaman HTML, gambar, CSS, JavaScript, atau data JSON. Web server berperan sebagai pondasi utama dalam arsitektur world wide web dan menjadi pintu gerbang antara pengguna dengan konten aplikasi atau situs web.
Fungsi utama web server meliputi:
- Melayani konten statis - menyajikan file yang sudah tersedia di disk (HTML, CSS, gambar).
- Meneruskan konten dinamis - mengarahkan permintaan ke aplikasi backend (PHP, Python, Node.js, Ruby) melalui antarmuka seperti CGI, FastCGI, atau reverse proxy.
- Manajemen koneksi - mengelola ribuan koneksi simultan menggunakan model multi-process, multi-threaded, atau event-driven.
- Keamanan dan enkripsi - menyediakan koneksi aman melalui SSL/TLS (HTTPS).
Cara Kerja: HTTP Request dan Response
Web server bekerja berdasarkan model client-server dengan protokol HTTP (Hypertext Transfer Protocol). Alur komunikasi dasarnya adalah sebagai berikut:
- Klien (browser) membuka koneksi TCP ke server pada port 80 (HTTP) atau 443 (HTTPS).
- Klien mengirimkan HTTP request yang
terdiri dari metode (GET, POST, PUT, DELETE), Uniform
Resource Identifier (URI), header (seperti
User-Agent,Host,Accept), dan opsional body. - Server memproses request - mencocokkan URI dengan sumber daya atau logika aplikasi.
- Server mengembalikan HTTP response
berisi status bar (misal
200 OK,404 Not Found,500 Internal Server Error), header (sepertiContent-Type,Content-Length,Set-Cookie), dan body (konten halaman). - Koneksi ditutup atau dipertahankan untuk persistent connection (HTTP/1.1 Keep-Alive).
Contoh HTTP request:
GET /index.html HTTP/1.1
Host: www.contoh.com
User-Agent: Mozilla/5.0
Accept: text/html
Contoh HTTP response:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 128
<html><body><h1>Selamat Datang</h1></body></html>
Jenis-Jenis Web Server
1. Apache HTTP Server
Web server paling populer di era awal internet. Dikembangkan oleh
Apache Software Foundation. Mendukung modularitas tinggi melalui
dynamic shared objects (DSO), konfigurasi berbasis
direktori (.htaccess), dan antarmuka
Multi-Processing Modules (MPM) seperti
prefork, worker, dan event.
Cocok untuk lingkungan shared hosting dan aplikasi PHP/LAMP
tradisional.
2. Nginx (Engine-X)
Web server berperforma tinggi dengan arsitektur event-driven
dan asynchronous non-blocking I/O. Nginx unggul dalam
menangani ribuan koneksi simultan dengan konsumsi memori rendah.
Sering digunakan sebagai reverse proxy, load
balancer, dan static file server. Tidak mendukung
.htaccess; konfigurasi sepenuhnya di file utama.
3. Microsoft IIS (Internet Information Services)
Web server proprietary dari Microsoft yang terintegrasi erat dengan ekosistem Windows Server dan ASP.NET. Mendukung Windows Authentication, Application Request Routing (ARR), dan manajemen melalui GUI (IIS Manager). Cocok untuk organisasi yang sudah mengadopsi infrastruktur Microsoft.
4. Lighttpd
Web server ringan yang dirancang untuk lingkungan dengan sumber daya terbatas. Arsitektur event-driven dengan footprint memori sangat kecil. Cocok untuk embedded systems, server dengan RAM rendah, atau aplikasi yang hanya membutuhkan kemampuan HTTP dasar.
Konsep Lanjutan
Virtual Host
Virtual host memungkinkan satu web server melayani banyak domain atau situs web. Dua jenis virtual host:
- Name-based: Membedakan situs
berdasarkan header
Hostdalam HTTP request. Paling umum digunakan. - IP-based: Setiap situs memiliki alamat IP sendiri. Jarang digunakan karena keterbatasan alamat IPv4.
Reverse Proxy
Reverse proxy adalah server perantara yang menerima permintaan dari
klien dan meneruskannya ke satu atau lebih server backend.
Manfaatnya meliputi load balancing, caching, kompresi, dan
terminasi SSL. Nginx dan Apache (dengan modul
mod_proxy) sering digunakan sebagai reverse proxy.
Load Balancing
Load balancing mendistribusikan lalu lintas HTTP ke beberapa server backend untuk meningkatkan kapasitas dan keandalan. Algoritma yang umum digunakan: round-robin, least connections, IP hash, dan weighted distribution.
SSL/TLS Termination
Proses mendekripsi lalu lintas HTTPS di sisi proxy atau web server sehingga server backend tidak perlu menangani enkripsi. Ini mengurangi beban komputasi pada server aplikasi. Sertifikat SSL dikelola di satu titik, menyederhanakan administrasi.
Contoh Konfigurasi Nginx
server {
listen 80;
server_name contoh.com www.contoh.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name contoh.com;
ssl_certificate /etc/ssl/certs/contoh.crt;
ssl_certificate_key /etc/ssl/private/contoh.key;
root /var/www/contoh;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
location ~* \.(jpg|jpeg|png|css|js|ico)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
Konfigurasi di atas menunjukkan redirect HTTP ke HTTPS, terminasi SSL, document root, FastCGI pass untuk PHP, dan caching untuk aset statis. Kombinasi fitur-fitur ini mencerminkan praktik terbaik dalam implementasi web server modern.