Cara Optimasi Nginx Web Server di VPS Linux

Banyak orang beranggapan bahwa web server nginx adalah web server dengan speed tercepat dan paling hemat resource jika dibandingkan dengan web server lain seperti apache. Anggapan tersebut tidak sepenuhnya benar, namun juga tidak sepenuhnya salah. Semuanya dikembalikan kepada web master (pemilik web) itu sendiri. Semuanya itu tergantung bagaimana web master tersebut melakukan pengaturan dan konfigurasi pada web server nginx yang ia gunakan.

Beberapa waktu yang lalu, saya berhasil membangun sebuah web blog dengan menggunakan nginx web server dan CMS wordpress pada VPS Digitalocean yang saya miliki. Pada saat itu saya belum melakukan optimasi nginx sedikit pun, semuanya saya biarkan apa adanya, termasuk theme wordpress yang digunakan merupakan theme bawaan dari proses instalasi wordpress.cara mengoptimalkan kinerja nginx, cara optimasi nginx, cara meningkatkan performa nginx, cara menggunakan nginx, cara memakai nginx web server, cara mengatasi error nginx,

Berikut ini adalah hasil speedtest web blog tersebut dari situs GTmetrix :

cara membuat blog di vps, membuat blog dengan nginx, membuat blog di ubuntu, membuat blog wordpress di linux, membuat wordpress di ubuntu

Setelah melihat hasil test yang cukup memprihatinkan tersebut, saya coba lakukan optimasi nginx dengan merubah beberapa konfigurasi dibawah ini :

  • Menyesuaikan nginx worker_processes
    Worker processes adalah hal yang paling penting yang wajib anda sesuaikan pada konfigurasi web server nginx. Worker processes adalah pengaturan jumlah proses per core (inti) CPU yang anda punya. Jadi, jika VPS anda hanya memiliki satu core CPU, maka worker processes nginx sebaiknya tidak lebih dari satu.Untuk dapat mengetahui jumlah core CPU VPS anda, silahkan berikan command :

    grep ^processor /proc/cpuinfo | wc -l

    cara cek cpu core server, cara mengetahui spesifikasi vps, cara mengetahui jumlah cpu  vps, cara cek jumlah cpu core server linux
    Setelah mengetahui jumlah core CPU VPS anda, silahkan anda edit file /etc/nginx/nginx.conf

    nano /etc/nginx/nginx.conf

    Secara default biasanya worker_processesnya berjumlah 4, silahkan ganti angka 4 tersebut dengan jumlah core  CPU VPS anda.
    cara merubah worker processes nginx, cara mengganti worker processes di nginx

  • Menyesuaikan nginx worker_connections
    Nginx worker connections adalah jumlah maksimum orang atau koneksi yang dapat dilayani oleh nginx worker process secara bersamaan. Nilai nginx worker connections default adalah 768, tapi anda dapat merubah dan menyesuaikannya sampai nilai maksimum (limit) core (inti) CPU anda.Untuk mengetahui limit core CPU VPS anda, silahkan berikan perintah :

    ulimit -n

    cek limit core cpu, cek maksimum core cpu, cek limit cpu linux, mengetahui limit core cpu di vps
    Pada VPS saya, limit core CPU-nya adalah 1024, maka saya rubah worker connections yang terdapat pada bagian events di file /etc/nginx/nginx.conf menjadi 1024. Dengan konfigurasi seperti itu, maka dapat disimpulkan bahwa setiap satu core CPU dapat melayani sebanyak 1024 client per second.

    Jika mengacu pada rumus yang berlaku bahwa jumlah maksimal client adalah worker processes dikali dengan worker connections, maka maksimal client yang dapat dilayani oleh server saya adalah 1×1024, yaitu 1024 client dapat mengakses nginx secara bersamaan. Disamping itu, saya juga mengaktifkan multi accept dan menggunakan epoll seperti pada screenshot berikut :

    multi accept di web server nginx, mengaktifkan epoll di nginx

  • Buffer Size
    Selanjutnya yang tidak kalah penting adalah konfigurasi buffer size pada web server nginx. Jika pengaturan buffer sizenya terlalu rendah, maka bisa berakibat nginx akan membuat file temporari yang dapat menyababkan harddisk akan menulis dan membaca file tersebut berulang kali.Berikut adalah beberapa konfigurasi buffer yang biasa digunakan :

    • client_body_buffer_size = Digunakan untuk menangani buffer size client pada bagian body.
    • client_header_buffer_size = Digunakan untuk menangani buffer size client pada bagian header.
    • client_max_body_size = Adalah ukuran maksimal permintaan client pada nginx. Jika permintaan client pada nginx melampaui ukuran maksimal tersebut, maka nginx akan memberikan pesan error 413 atau Request Entity Too Large.
    • large_client_header_buffers = Adalah ukuran maksimum dan ukuran buffer untuk header klien besar.

    Berikut adalah konfigurasi buffer nginx yang saya gunakan :

    client_body_buffer_size 10K;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 2 1k;

    Masukkan konfigurasi buffer seperti baris-baris diatas pada file /etc/nginx/nginx.conf. Gunakan editor yang biasa anda pakai untuk menambahkan baris-baris tersebut.

    menentukan buffer size nginx, mengatur ukuran buffer nginx, mengkonfigurasi buffer size nginx, setting buffer size di nginx

  • Timeout
    Konfigurasi timeout juga dapat meningkatkan performa nginx secara signifikan.

    • client_body_timeout dan client_header_timeout = Berfungsi untuk memberi waktu kepada server supaya mengirimkan client body dan atau client header yang diminta.
    • keepalive_timeout = Berfungsi untuk membatasi waktu koneksi dengan client, yang artinya, nginx akan memutuskan koneksi dengan client apabila sudah mencapai batas waktu yang sudah ditentukan.
    • send_timeout = Berguna untuk menentukan waktu koneksi. Jika setelah mencapai batas waktu yang ditentukan, client tidak melakukan apapun, maka nginx akan mematikan (memutuskan) koneksinya.

    Berikut adalah konfigurasi timeout yang saya gunakan :

    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;

    setting timeout nginx, konfigurasi timeout di nginx, nginx timeout linux
    Masukkan baris diatas masih pada file /etc/nginx/nginx.conf.

  • Gzip Compression
    Gzip compression dapat membantu mengurangi beban transfer pada nginx dengan sangat singnifikan. Berhati-hatilah pada saat menentukan gzip_comp_level. Jika gzip_comp_level diatur terlalu tinggi, maka akan malah menambah beban kerja CPU.Berikut adalah konfigurasi Gzip compression yang saya gunakan :

    gzip on;
    gzip_vary on;
    gzip_comp_level 3;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
    gzip_disable "MSIE [1-6]\.";

    Silahkan masukkan dan sesuaikan seperti pada contoh konfigurasi diatas pada file /etc/nginx/nginx.conf.

    cara setting gzip di nginx, cara mengaktifkan gzip nginx, cara konfigurasi gzip di nginx, cara edit pengaturan gzip di nginx, cara mempercepat web dengan gzip

  • Logging
    Sekedar untuk diketahui bahwa nginx mencatat setiap permintaan (request) dalam log file. Jika anda ingin menonaktifkaan fitur logging ini, silahkan tambahkan baris berikut pada file /etc/nginx/nginx.conf :

    access_log off;

    Pastikan anda sudah memberikan tanda pagar sebelum baris berikut :

    access_log /var/log/nginx/access.log;

    Jangan lupa simpan semua konfigurasi diatas.

    menonaktifkan nginx access log, disable nginx access log, menghapus nginx access log, menonaktifkan file log nginx

  • Static File Caching
    Ini adalah faktor yang sangat penting yang harus anda lakukan jika ingin melakukan optimasi terhadap web dengan web server nginx. Silahkan buka file konfigurasi nginx server blocks (virtual hosts) anda. Biasanya terletak di /etc/nginx/sites-enabled/namafile, kemudian tambahkan baris-baris berikut kedalam file tersebut :

    location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
    access_log off;
    log_not_found off;
    expires 356d;
    }

    Jangan lupa simpan konfigurasi tersebut sebelum anda keluar dari file /etc/nginx/sites-enabled/namafile.

    konfigurasi nginx cache, cara membuat nginx cache, cara setting nginx cache, menambahkan nginx cache di file virtual hosts

  • Port Redirect
    Hanya bagi yang menggunakan varnish cache sebagai frontend, anda wajib menonaktifkan port redirect dengan menambahkan baris berikut pada file konfigurasi nginx server blocks anda :

    port_in_redirect off;

    cara disable redirect port 8080 nginx, cara menonaktifkan redirect port nginxJika tidak menonaktifkan port redirect, anda tidak akan bisa membuka halaman web anda, karena selalu dibawa ke port 8080. Bagi anda yang ingin menggunakan varnish cache silahkan baca artikel cara install dan konfigurasi varnish cache dengan nginx di ubuntu.

Demikian beberapa konfigurasi yang dapat anda atur sedemikian rupa untuk mengoptimalkan dan meningkatkan performa web server nginx yang anda gunakan. Konfigurasi diatas adalah konfigurasi nginx versi 1.4.6 (versi default ubuntu 14.04). Silahkan anda sesuaikan saja apabila anda mengunakan versi nginx diatas atau dibawah versi yang saya gunakan.

Berikut ini adalah screenshot hasil test speed web blog tersebut dari GTmetrix setelah saya melakukan optimasi nginx seperti diatas :

cara test kecepatan blog, cara test speed website, cara menguji performa website, cara menguji kecepatan blog, test speed blog di gtmetrix

Jika anda merasa speed seperti diatas masih kurang bagus, silahkan anda gunakan layanan Content Delivery Network (CDN) dari para penyedia CDN seperti CloudFlare, MaxCDN, CacheFly, CDN77, CDNetworks dan lain sebagainya. Bagi anda yang ingin mencoba mempercepat website dengan CDN gratis dari CoudFlare silahkan baca artikel cara mempercepat loading website dengan CDN CloudFlare.

loading...
Tags:,

Komentar Agan Sista

6 Comments on "Cara Optimasi Nginx Web Server di VPS Linux"

avatar

Tampilkan Komentar:   Terbaru | Terlama | Terfavorit
Tomi
Pengunjung
1 year 4 months ago

Makasih Gan tutorialnya. :)
Kalau optimasi nginx di Centos 64bit gimana? Apakah sama?
Biar lebih optimal kinerja server kita.
Makasih Gan :)

Pendi
Pengunjung
Pendi
1 year 3 months ago

Gan Erik,
saya dah ikuti tutorial dan ikuti juga langkah-langkahnya, tapi koq tetep dapetnya
PageSpeed Grade = C (74%)
YSlow Grad = D (68%)

sedangkan saya compare dengan blog ini dedeerik.com hasilnya bisa A dan C
ada yang salah atau ada optimasi lain. Saya pake vps di id*osting*r yg 1 GB ram.
terimakasih banyak

Dicky
Pengunjung
Dicky
6 months 26 days ago

untuk buffer size itu taro di di dalam event, http atau diluar mas?
lalu untuk /etc/nginx/sites-enabled/namafile, itu namafile berdasarkan domain atau ip ya?

wpDiscuz
Optimization WordPress Plugins & Solutions by W3 EDGE
IBX582AC890E0126