Percepat situs web dengan Nginx sebagai reverse proxy cache

Mengoptimalkan Kinerja Web adalah masalah tertunda yang harus terus kerjakan. Ada beberapa solusi untuk meningkatkan waktu respons pada suatu web.

Apa itu Reverse Proxy Cache?

Dalam komputasi, reverse proxy adalah jenis server yang terletak di antara klien dan server atau server web yang mengambil resources ini. resources ini dikembalikan ke klien seolah-olah dikembalikan oleh server web itu sendiri. Pada dasarnya ini adalah perantara yang dapat bertindak dalam berbagai peran.

Kemungkinan aplikasi yang dapat kami berikan kepada proxy ini adalah menggunakannya sebagai firewall ke jaringan internal, sebagai penyeimbang beban, sebagai alat untuk menerapkan Pengujian AB atau alasan artikel ini, sebagai server cache statis.


Pada dasarnya server ini digunakan sebagai cache, berkonsultasi dengan server web jika tidak memiliki resources yang diminta, MISS terjadi dan resources ini disimpan dalam memori. Permintaan selanjutnya ke resources yang sama dilayani oleh proxy itu sendiri dengan cara yang sangat efisien, menghasilkan HIT dan menghindari panggilan ke server web selama TTL yang diberikan. Dengan cara ini kita dapat memasang server statis yang terpusat dan dari situ kita melayani semua konten statis kita.

Ada berbagai teknologi yang memungkinkan kita memenuhi skenario ini. Salah satu alat yang paling terkenal adalah Varnish, tetapi Nginx selain dari server web juga dapat dikonfigurasi untuk bertindak sebagai cache proxy terbalik. Membaca beberapa artikel perbandingan dan tolok ukur perbedaannya minimal, jadi hari ini kita akan fokus pada skenario Nginx-Nginx.

Namun, kami dapat mewakili skenario yang sama dengan kombinasi yang berbeda: Varnish-Apache, Varnish-Nginx atau Nginx-Apache, menjadi yang pertama dari pasangan server cache dan yang kedua adalah server web.

Kenapa Nginx?

Seperti Varnish, Nginx dapat bertindak sebagai cache web tetapi tidak semua administrator sistem mengetahui aspek ini. Nginx dapat menyajikan konten statis secara langsung dengan cara yang sangat efisien dan dapat bertindak sebagai cache yang menghadap ke depan, seperti Varnish. Meskipun Varnish hanya tugasnya untuk bertindak sebagai cache dengan opsi lanjutan, Nginx serba guna dan menawarkan beberapa alternatif.

Yang benar adalah bahwa saya tidak akan tahu yang mana dari dua opsi untuk ditolak, tetapi keputusan untuk menggunakan hanya nginx, bukan untuk memperkenalkan teknologi baru untuk dipelajari dan dipelihara dalam infrastruktur kami, dan tampaknya konfigurasi nginx jauh lebih sederhana daripada Pernis.

Instal Nginx

Untuk menginstal nginx di server, cukup menjalankan perintah berikut:


sudo apt-get install nginx

Secara default nginx akan diinstal pada sistem Anda pada port 80. Mari kita lihat cara mengkonfigurasi nginx.

Konfigurasikan server web

Pertama-tama kita harus mempertimbangkan bahwa server web yang akan membaca resources dari sistem file kita seharusnya tidak lagi pada port 80, karena proxy akan ditempatkan sebagai gantinya.

membuat folder tempat resources dihosting:


mkdir /var/www/assets

Setelah ini kita akan mengkonfigurasi nginx kita sehingga ia pada port 81, yang mendefinisikan sebagai root direktori resources kita dan itu termasuk waktu kedaluwarsa resources 12 jam. Ini dapat dikonfigurasi melalui ekspresi reguler yang memungkinkan konfigurasi. Untuk ini, kami membuat file berikut ini /etc/nginx/situs-available / static-server


server {
listen 81;
server_name {{tu ip o subdominio}};
access_log /var/log/nginx/static-server.log;
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 12h;
root /var/www/assets;
add_header Cache-Control "public";
}
}

Dan akhirnya kita akan memindahkannya ke / etc / nginx / sites-enabled / static-server. Jika sekarang kita membuat permintaan ke resources melalui port 81 kita harus dapat menerimanya.

Konfigurasikan cache proxy

Untuk mengkonfigurasi nginx untuk bertindak sebagai cache, kami akan menggunakan direktif proxy_cache_path. Arahan ini menunjukkan direktori mesin Anda tempat semua resources yang sedang di-cache akan disimpan.

Direktori ini harus berisi www-data group dan 700 permissions sehingga proxy dapat menulis dengan benar. Selain itu, arahan ini menunjukkan pengidentifikasi keys_zone yang mendefinisikan nama, ukuran maksimum cache ini dengan max_size, dan tingkat tipuan hierarki folder dalam cache.

Kami juga akan mengandalkan direktif proxy_cache_key lain, yang merupakan kunci untuk menyimpan resources yang di-cache. Pada dasarnya nginx membuat hash dari struktur ini, dengan cara ini untuk dapat memilih level cache, misalnya jika ia menggunakan parameter yang sama atau tidak di url.

Setelah kami memiliki dua arahan ini jelas, kami akan menunjukkan bahwa proxy mendengarkan pada port 80, dan bahwa setiap permintaan yang datang memeriksa area cache yang telah kami tetapkan dan sebaliknya memeriksa server web kami pada port 81 dengan direktif proxy_pass

Selain itu, Nginx menyertakan header yang disebut X-Proxy-Cache yang memberi tahu klien jika resources dikembalikan oleh cache (HIT) atau harus berkonsultasi dengan server web (MISS). Informasi ini sangat menarik untuk di-debug bahwa semuanya berfungsi dengan benar.

Sekarang saya meninggalkan konfigurasi lengkap dari server caching:


#/etc/nginx/sites-enabled/caching-server
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=assets_zone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
server {
listen 80;
server_name {{tu ip o subdominio}};
access_log /var/log/nginx/caching-server.log;
location /static/ {
proxy_cache assets_zone;
add_header X-Proxy-Cache $upstream_cache_status;
include proxy_params;
proxy_pass http://localhost:81/;
}
}

Saya harap artikel ini menarik dan bermanfaat dan saya harap Anda memberi tahu kami pengalaman Anda tentang cara mengoptimalkan situs web Anda dan masalah yang Anda hadapi serta solusi yang telah Anda terapkan.

You may like these posts