Berikut adalah penjelasan lengkap mengenai file apa saja yang diubah, isi perubahannya, dan langkah-langkah optimasi Nginx di Ubuntu:


1. File Utama Konfigurasi Nginx

Lokasi: /etc/nginx/nginx.conf

Perubahan:

Optimasi Worker Processes dan Connections Tambahkan atau ubah bagian berikut:
worker_processes auto;  # Secara otomatis menyesuaikan dengan jumlah core CPU
worker_connections 1024;  # Jumlah maksimum koneksi simultan per worker

Aktifkan Sendfile, TCP_NOPUSH, dan TCP_NODELAY Tambahkan pengaturan ini dalam blok http:
sendfile on;          # Mempercepat pengiriman file
tcp_nopush on;        # Meningkatkan efisiensi pengiriman file
tcp_nodelay on;       # Memastikan pengiriman data kecil lebih cepat
keepalive_timeout 65; # Waktu tunggu koneksi keep-alive
types_hash_max_size 2048; # Ukuran maksimal untuk hash jenis MIME

Aktifkan Kompresi (gzip) Tambahkan pengaturan berikut untuk mengurangi ukuran data yang dikirim:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_min_length 1024;


2. File Virtual Host

Lokasi: /etc/nginx/sites-available/default (atau file virtual host lain yang digunakan)

Perubahan:

Cache File Statis Tambahkan aturan berikut untuk memanfaatkan caching browser:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {
    expires max;
    log_not_found off;
}

FastCGI Cache (Jika Menggunakan PHP-FPM) Aktifkan cache PHP dengan menambahkan:
fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=FASTCGI:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock; # Sesuaikan versi PHP
    fastcgi_cache FASTCGI;
    fastcgi_cache_valid 200 301 302 1h;
    fastcgi_cache_bypass $http_cache_control;
    fastcgi_no_cache $http_cache_control;
}

Aktifkan HTTP/2 Jika Anda menggunakan HTTPS, tambahkan http2 ke dalam konfigurasi listen:
server {
    listen 443 ssl http2;
    ssl_certificate /etc/nginx/ssl/your_domain.crt;
    ssl_certificate_key /etc/nginx/ssl/your_domain.key;
    ...
}


3. File Kernel Parameters

Lokasi: /etc/sysctl.conf

Perubahan:

Tambahkan pengaturan untuk meningkatkan performa jaringan:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_fin_timeout = 15

Terapkan Perubahan:

Setelah menambahkan pengaturan di atas, jalankan:
sudo sysctl -p


4. File Limits untuk Maksimum File Descriptors

Lokasi: /etc/security/limits.conf

Perubahan:

Tambahkan pengaturan berikut untuk meningkatkan jumlah file yang dapat dibuka:
*               soft    nofile          65535
*               hard    nofile          65535

Langkah Tambahan:

Edit juga file /etc/pam.d/common-session dan /etc/pam.d/common-session-noninteractive, tambahkan:
session required pam_limits.so


5. File SSL (Opsional)

Lokasi: File SSL yang digunakan, seperti:
  • /etc/nginx/ssl/your_domain.crt
  • /etc/nginx/ssl/your_domain.key

Keterangan:

Pastikan sertifikat SSL valid untuk menggunakan HTTP/2.

Langkah Akhir

Cek Konfigurasi Nginx: Sebelum me-restart Nginx, pastikan konfigurasi tidak ada error:
sudo nginx -t

Restart Nginx: Jalankan perintah berikut untuk menerapkan perubahan:
sudo systemctl restart nginx


Tips Tambahan

  • Gunakan CDN (Content Delivery Network) seperti Cloudflare untuk mempercepat distribusi file statis.
  • Pastikan Anda menggunakan versi terbaru Nginx untuk mendapatkan fitur dan perbaikan performa terbaru.
  • Gunakan alat monitoring seperti htop, ngxtop, atau Nginx Amplify untuk memantau performa server.
Dengan langkah-langkah ini, performa Nginx Anda akan meningkat secara signifikan, terutama untuk menangani beban lalu lintas tinggi.