TDCTF Academy Logo TDCTF ACADEMY

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:

  1. Melayani konten statis - menyajikan file yang sudah tersedia di disk (HTML, CSS, gambar).
  2. Meneruskan konten dinamis - mengarahkan permintaan ke aplikasi backend (PHP, Python, Node.js, Ruby) melalui antarmuka seperti CGI, FastCGI, atau reverse proxy.
  3. Manajemen koneksi - mengelola ribuan koneksi simultan menggunakan model multi-process, multi-threaded, atau event-driven.
  4. 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:

  1. Klien (browser) membuka koneksi TCP ke server pada port 80 (HTTP) atau 443 (HTTPS).
  2. 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.
  3. Server memproses request - mencocokkan URI dengan sumber daya atau logika aplikasi.
  4. Server mengembalikan HTTP response berisi status bar (misal 200 OK, 404 Not Found, 500 Internal Server Error), header (seperti Content-Type, Content-Length, Set-Cookie), dan body (konten halaman).
  5. 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 Host dalam 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.

PADA HALAMAN INI