Dalam dunia web hosting dan pengembangan web, web server adalah komponen inti yang bertugas menyajikan konten dari situs web kepada pengguna melalui protokol HTTP atau HTTPS. Dua web server paling populer di dunia adalah Apache HTTP Server dan Nginx (Engine-X). Keduanya bersifat open source dan dapat dijalankan di berbagai sistem operasi, terutama Linux.
Artikel ini akan membahas secara mendetail langkah-langkah konfigurasi dasar Apache dan Nginx, mulai dari instalasi, pengaturan virtual host, integrasi PHP, hingga penerapan SSL menggunakan Let’s Encrypt.
Apa Itu Apache dan Nginx?
Apache dan Nginx adalah perangkat lunak server web yang berfungsi melayani permintaan pengguna (client) dari browser ke server. Berikut perbedaan singkat keduanya:
| Fitur | Apache | Nginx |
|---|---|---|
| Arsitektur | Process-based | Event-driven |
| Keunggulan | Mendukung .htaccess, modular, mudah dikonfigurasi | Cepat, ringan, efisien untuk koneksi besar |
| Umum digunakan | Hosting tradisional (PHP, CMS) | Reverse proxy, microservice, web modern |
Prasyarat
Sebelum memulai konfigurasi, pastikan Anda memiliki:
- Server Linux (Ubuntu/Debian atau CentOS/RHEL)
- Akses root atau pengguna
sudo - Domain aktif (opsional, tapi disarankan)
- Port 80 (HTTP) dan 443 (HTTPS) terbuka
Bagian 1 — Instalasi Apache
1. Instalasi Apache di Ubuntu/Debian
sudo apt update
sudo apt install -y apache2
2. Instalasi Apache di CentOS/RHEL
sudo dnf install -y httpd
sudo systemctl enable --now httpd
3. Mengecek Status
sudo systemctl status apache2 # Debian/Ubuntu
sudo systemctl status httpd # CentOS/RHEL
Jika halaman default Apache muncul di browser (http://IP-server), maka instalasi berhasil.
Bagian 2 — Konfigurasi Virtual Host Apache
Virtual Host memungkinkan satu server melayani banyak situs web.
1.Buat direktori untuk situs Anda:
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
2.Buat file konfigurasi baru:
sudo nano /etc/apache2/sites-available/example.com.conf
Isi dengan:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example_error.log
CustomLog ${APACHE_LOG_DIR}/example_access.log combined
<Directory /var/www/example.com/public_html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3.Aktifkan situs dan modul rewrite:
sudo a2ensite example.com.conf
sudo a2enmod rewrite
sudo systemctl reload apache2
Sekarang, situs dapat diakses melalui domain Anda.
Bagian 3 — Integrasi PHP dengan Apache
Untuk menjalankan aplikasi PHP seperti WordPress atau Laravel, Anda perlu menambahkan PHP-FPM.
Instalasi PHP-FPM:
sudo apt install -y php php-fpm php-mysql
Konfigurasi Apache:
Tambahkan konfigurasi berikut pada file VirtualHost:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>
Pastikan versi PHP dan path socket sesuai.
Bagian 4 — Instalasi dan Konfigurasi Nginx
1. Instalasi
Ubuntu/Debian:
sudo apt install -y nginx
CentOS/RHEL:
sudo dnf install -y nginx
sudo systemctl enable --now nginx
Akses http://IP-server untuk memastikan Nginx aktif.
Bagian 5 — Konfigurasi Server Block Nginx
Server Block di Nginx setara dengan Virtual Host di Apache.
1.Buat direktori situs:
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com
2.Buat konfigurasi server block:
sudo nano /etc/nginx/sites-available/example.com
Isi dengan:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public_html;
index index.php index.html;
access_log /var/log/nginx/example_access.log;
error_log /var/log/nginx/example_error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
3.Aktifkan situs dan reload Nginx:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Bagian 6 — Menambahkan SSL Let’s Encrypt
Gunakan Certbot untuk mendapatkan sertifikat SSL gratis.
Apache:
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
Nginx:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Sertifikat otomatis diperbarui oleh Certbot menggunakan cron.
Bagian 7 — Tuning dan Keamanan Dasar
Apache:
- Matikan signature:
ServerSignature Off
ServerTokens Prod
- Gunakan MPM
eventuntuk performa tinggi.
Nginx:
- Tambahkan di
nginx.conf:
server_tokens off;
worker_processes auto;
- Aktifkan GZIP:
gzip on;
gzip_types text/plain text/css application/json application/javascript;
Umum:
- Aktifkan firewall (
ufw allow 'Nginx Full'ataufirewall-cmd --add-service=http) - Selalu perbarui paket (
sudo apt update && sudo apt upgrade) - Backup konfigurasi
/etc/nginx/dan/etc/apache2/
Kesimpulan
Baik Apache maupun Nginx memiliki keunggulan masing-masing. Apache lebih fleksibel untuk situs berbasis PHP dan CMS seperti WordPress, sedangkan Nginx unggul untuk performa tinggi, reverse proxy, dan load balancing.
Dengan mengikuti langkah-langkah di atas, Anda sudah memiliki web server dasar yang siap online, lengkap dengan dukungan PHP dan SSL.