Pengertian Nginx

Nginx (dibaca “engine x”) adalah sebuah web server yang populer dan juga berfungsi sebagai reverse proxy server, mail proxy server, dan generic TCP/UDP proxy server. Nginx dirancang untuk menangani sejumlah besar koneksi simultan, sehingga sangat cocok untuk digunakan dalam situs web yang mengalami lonjakan lalu lintas yang tinggi. Nginx dikembangkan dengan tujuan meningkatkan kinerja dan skalabilitas, serta memberikan kehandalan tinggi.

1. Arsitektur Nginx

Arsitektur Nginx terdiri dari master process (nginx) dan beberapa worker processes (nginx worker). Proses master mengelola proses worker dan menerima semua koneksi dari klien, sementara proses worker menangani request/response dari klien yang diteruskan oleh proses master. Setiap worker memiliki event loop yang berjalan secara independen sehingga dapat menangani banyak koneksi secara bersamaan.

2. Fitur Nginx

  • High performance: Nginx dirancang untuk menangani ribuan koneksi simultan dengan menggunakan sedikit sumber daya server.
  • Reverse proxy: Nginx dapat berfungsi sebagai front-end server yang menerima request dari klien dan meneruskannya ke server backend.
  • Load balancing: Nginx dapat melakukan distribusi lalu lintas dengan membagi beban kerja ke server backend yang tersedia.
  • HTTP caching: Nginx dapat menyimpan salinan response yang sering diakses dalam cache untuk meningkatkan kecepatan akses.
  • SSL/TLS termination: Nginx dapat memproses enkripsi dan dekripsi SSL/TLS, sehingga mengurangi beban pada server backend.
  • Virtual hosting: Nginx mendukung konfigurasi multiple websites dengan menggunakan satu server fisik.
  • WebSockets: Nginx mendukung komunikasi dua arah antara klien dan server melalui protokol WebSockets.

3. Konfigurasi Nginx

Untuk mengkonfigurasi Nginx, Anda perlu mengedit file konfigurasi utama yang biasanya ditempatkan di direktori /etc/nginx/nginx.conf. File ini menggunakan sintaks yang mudah dibaca dan memungkinkan Anda untuk mengatur server, location, proxy, cache, dan banyak aspek lainnya. Setelah melakukan perubahan pada file konfigurasi, Anda perlu me-load atau me-start ulang Nginx agar perubahan diterapkan.

4. Kelebihan Nginx

Nginx memiliki sejumlah kelebihan jika dibandingkan dengan web server lainnya:

  • Kinerja yang tinggi: Nginx memiliki kecepatan akses yang sangat tinggi dan kapabilitas menangani ratusan ribu koneksi simultan.
  • Skalabilitas: Nginx dirancang untuk mampu mengatasi lalu lintas yang tinggi dan memanfaatkan sumber daya yang efisien.
  • Konsumsi sumber daya yang rendah: Nginx menggunakan sedikit sumber daya, sehingga dapat menghemat penggunaan CPU dan memori.
  • Kompatibilitas dengan berbagai platform: Nginx dapat dijalankan pada berbagai sistem operasi dan dapat digunakan dengan bahasa pemrograman yang populer.

5. Penggunaan Nginx

Nginx dapat digunakan dalam berbagai skenario, seperti:

  • Meng-host website dan aplikasi web: Nginx dapat digunakan sebagai server web untuk meng-host website dan meng-handle lalu lintas HTTP/HTTPS.
  • Load balancing: Nginx dapat digunakan untuk mendistribusikan lalu lintas antara server-backend yang tersedia.
  • Reverse proxy: Nginx dapat digunakan sebagai reverse proxy untuk meneruskan request dari klien ke server-backend.
  • Cache server: Nginx dapat diatur untuk menyimpan salinan response dari server-backend yang sering diakses dalam cache, sehingga mengurangi waktu akses ke server-backend.
  • SSL/TLS termination: Nginx dapat digunakan untuk memproses enkripsi dan dekripsi SSL/TLS.
  • Media streaming: Nginx dapat digunakan untuk melakukan streaming media seperti audio dan video.

6. Nginx vs Apache

Nginx dan Apache (Apache HTTP Server) adalah dua web server yang populer. Perbedaan utama antara keduanya adalah arsitektur dan kinerja. Nginx menggunakan pendekatan event-driven non-blocking, sedangkan Apache menggunakan pendekatan proses berbasis thread. Hal ini membuat Nginx lebih efisien dalam menangani banyak koneksi secara bersamaan, sementara Apache cenderung lebih cocok untuk digunakan dalam situasi di mana pemrosesan request yang kompleks diperlukan.

7. Contoh Konfigurasi Nginx untuk Reverse Proxy

Berikut ini adalah contoh konfigurasi Nginx untuk digunakan sebagai reverse proxy:

File konfigurasi:/etc/nginx/nginx.conf
Contoh konfigurasi:
http {
    server {
        listen       80;
        server_name  example.com;

        location / {
            proxy_pass         http://backend;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /static/ {
            alias   /var/www/static/;
        }
    }

    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
}