Keamanan Nginx penting untuk melindungi server dari serangan, abuse, dan akses tidak sah. Dengan konfigurasi yang tepat, Nginx dapat menangani traffic tinggi sambil tetap aman.
Contents
1. Membatasi IP / Rate Limiting
Nginx dapat membatasi jumlah request per client menggunakan limit_req dan limit_conn.
1.1 Limit Request per IP
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
server {
location / {
limit_req zone=mylimit burst=20 nodelay;
proxy_pass http://backend;
}
}
}
rate=10r/s→ maksimal 10 request per detik per IPburst=20→ menampung request tambahan saat spikenodelay→ request melebihi burst ditolak langsung
1.2 Limit Connections
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /downloads/ {
limit_conn addr 5;
}
}
}
- Membatasi maksimal koneksi per IP
- Cocok untuk folder download atau resource berat
2. Proteksi terhadap DDoS Sederhana
Rate limiting membantu mencegah request berlebihan. Tambahkan burst dan delay:
limit_req zone=mylimit burst=30 delay=5;
delay=5→ menunda request jika burst terlampaui- Kombinasi dengan
limit_connmeminimalkan overload server
Tips tambahan: gunakan fail2ban untuk memblokir IP yang berulang kali melanggar rate limit.
3. Mengatur Firewall (UFW / iptables)
3.1 UFW
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status
- Membuka port HTTP (80) dan HTTPS (443)
- Menutup port lain yang tidak digunakan
3.2 iptables
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP
- Membatasi akses hanya ke port yang diperlukan
- Bisa dikombinasikan dengan fail2ban untuk blok otomatis
4. HTTP Security Headers
Menambahkan header untuk mencegah serangan umum:
server {
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self';";
add_header Referrer-Policy "no-referrer-when-downgrade";
}
X-Frame-Options→ cegah clickjackingX-Content-Type-Options→ cegah MIME sniffingX-XSS-Protection→ perlindungan XSSContent-Security-Policy→ kontrol sumber kontenReferrer-Policy→ atur informasi referrer yang dikirim
5. Membatasi Akses ke Folder Sensitif
Beberapa folder harus tidak dapat diakses publik, misal /config, /logs, .git.
location ~ /\.(git|svn) {
deny all;
}
location /config/ {
deny all;
}
location /logs/ {
deny all;
}
deny all→ blokir akses semua client- Mencegah data sensitif terekspos
6. Contoh Konfigurasi Security Lengkap
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
server_name example.com;
root /var/www/html/example;
location / {
limit_req zone=mylimit burst=20 nodelay;
limit_conn addr 5;
try_files $uri $uri/ =404;
}
# Blokir folder sensitif
location ~ /\.(git|svn) { deny all; }
location /config/ { deny all; }
location /logs/ { deny all; }
# Security headers
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self';";
add_header Referrer-Policy "no-referrer-when-downgrade";
}
}
7. Kesimpulan
Dengan konfigurasi security Nginx, server dapat:
- Membatasi request per IP dan koneksi untuk mencegah abuse
- Melindungi server dari DDoS sederhana
- Mengatur firewall dengan UFW atau iptables
- Menambahkan HTTP security headers untuk mencegah XSS, clickjacking, dan data leak
- Membatasi akses ke folder sensitif untuk mencegah ekspos data penting
Kombinasi rate limiting, firewall, headers, dan pembatasan folder menjaga server tetap aman, stabil, dan sesuai best practice.