Bab 12: Modul Nginx – Core, HTTP, Stream, dan 3rd-Party

Bab 12: Modul Nginx – Core, HTTP, Stream, dan 3rd-Party

Nginx dibangun modular, sehingga fungsionalitasnya dapat diperluas melalui modul. Modul mengontrol bagaimana Nginx mengelola request, memproses traffic, dan berinteraksi dengan backend.


1. Modul Core

Modul core menyediakan fungsi dasar Nginx yang selalu tersedia. Beberapa directive penting:

  • worker_processes → jumlah proses worker Nginx
  • worker_connections → jumlah koneksi per worker
  • error_log → lokasi dan level error log
  • pid → 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:

  1. Core module: mengelola proses, koneksi, dan error log
  2. HTTP module: mengelola request web, rewrite, header, gzip, proxy
  3. Stream module: proxy TCP/UDP, load balancing untuk aplikasi non-HTTP
  4. 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.