Nginx dibangun modular, sehingga fungsionalitasnya dapat diperluas melalui modul. Modul mengontrol bagaimana Nginx mengelola request, memproses traffic, dan berinteraksi dengan backend.
Contents
1. Modul Core
Modul core menyediakan fungsi dasar Nginx yang selalu tersedia. Beberapa directive penting:
worker_processes→ jumlah proses worker Nginxworker_connections→ jumlah koneksi per workererror_log→ lokasi dan level error logpid→ menyimpan PID master process
Contoh konfigurasi core:
worker_processes auto;
events {
worker_connections 1024;
}
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_processes auto→ menyesuaikan jumlah CPU- Modul core mengatur event-driven dan asynchronous handling
2. Modul HTTP
Modul HTTP menangani request berbasis HTTP/HTTPS dan menyediakan banyak fitur tambahan:
2.1 Rewrite dan Redirect
rewrite→ memodifikasi URL request
location /old/ {
rewrite ^/old/(.*)$ /new/$1 permanent;
}
2.2 Headers
- Mengatur header response atau request:
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
2.3 Gzip Compression
- Mengurangi ukuran response untuk meningkatkan kecepatan:
gzip on;
gzip_types text/plain text/css application/javascript;
2.4 Proxy dan Load Balancing
- Proxy ke backend dengan
proxy_pass - Load balancing dengan
upstream
HTTP modul adalah modul utama untuk web server Nginx.
3. Modul Stream
Modul stream memungkinkan proxy untuk TCP/UDP seperti database, mail server, atau game server.
3.1 Contoh TCP Proxy
stream {
upstream db_backend {
server 127.0.0.1:3306;
server 127.0.0.1:3307;
}
server {
listen 3306;
proxy_pass db_backend;
}
}
- Dapat digunakan untuk load balancing TCP
- Mendukung SSL/TLS untuk TCP
- Berguna untuk MySQL, Redis, atau aplikasi custom TCP/UDP
4. Modul 3rd-Party
Nginx mendukung modul pihak ketiga untuk menambah fungsionalitas:
4.1 PageSpeed
- Optimasi otomatis front-end: minify CSS/JS, lazy load image
- Diinstal sebagai modul tambahan (OpenResty atau compile Nginx dengan PageSpeed)
4.2 Lua (OpenResty / ngx_lua)
- Menambahkan scripting di Nginx
- Bisa melakukan request routing, header modification, authentication, dan API logic
Contoh:
location /api/ {
content_by_lua_block {
ngx.say("Hello from Lua!");
}
}
4.3 Modul Lain
- Brotli compression
- JWT authentication
- Third-party caching
- Rate limiting custom
5. Kesimpulan
Modul Nginx memungkinkan:
- Core module: mengelola proses, koneksi, dan error log
- HTTP module: mengelola request web, rewrite, header, gzip, proxy
- Stream module: proxy TCP/UDP, load balancing untuk aplikasi non-HTTP
- 3rd-party module: memperluas fungsi Nginx, termasuk optimasi, scripting, dan keamanan
Modularitas ini membuat Nginx fleksibel, scalable, dan dapat disesuaikan untuk berbagai kebutuhan, mulai dari website statis hingga aplikasi kompleks berbasis TCP/UDP.