Apabila ada web server dengan URL http://1.2.3.4 dan di depan server tsb ada Reverse Proxy server dengan URL http://5.5.5.5, maka apabila setting reverse proxy sudah benar, apabila client misalkan akses ke sebuah file ke Reverse Proxy (+Cache), maka apabila file tsb tidak ada di local storage dia maka Reverse Proxy akan meminta file tsb ke Server origin.
Jadi dari sisi client, akses berikut akan mendapatkan file yang sama:
http://1.2.3.4/src/img/haihai.jpg
http://5.5.5.5/src/img/haihai.jpg
Perhatikan bahwa di server Reverse Proxy direktori /src/img tidak harus ada pada awalnya secara fisik, namun akan terbentuk sendirinya apabila ada client yang akses ke http://5.5.5.5/src/img/haihai.jpg.
Berikut adalah contoh konfigurasi dari Reverse Proxy (+Cache):
http {
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m
inactive=24h max_size=10g use_temp_path=off
;
server {
location / {
proxy_pass http://1.2.3.4;
proxy_set_header Host $host;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
}
}
Untuk menjadikan NGINX sebagai cache diperlukan directive proxy_cache_path dan proxy_cache. Directive proxy_cache_path untuk mengeset path dari proxy, sedangkan proxy_cache mengaktifkan cache.
levels=1:2 berarti set 2 level direktori di bawah /data/nginx/cache. Jika tidak di buat 2 level maka semua file diletakkan di dalam satu direktori dan jika file terlalu banyak maka akan memperlambat akses ke chache.
key_zone=STATIC:10m berarti keyzone disediakan 10MB size di memory. 1 MB bisa menampung 8.000 key. Satu file akan dibuatkan satu key identifier sehingga 10 MB bisa menampung 80.000 key.
inactive=24h berarti apabila dalam 24 jam tidak ada yang merequest file di cache tsb maka file akan di hapus. Directive ini berbeda dengan expired content. Sebuah content expiry nya di set di cache control header.
max_size=10g berarti chache maximal sebanyak 10 GB. Apabila sudah penuh maka ada data yang di delete secara otomatis.
use_temp_path=off berarti jangan gunakan direktori lain untuk menulis sementara sebelum ditulis ke direktory proxy_cache_path.
proxy_chace mengakfifkan cache untuk semua content di bawah "location" (dalam hal ini location /).
Berikit video tutorial simple configuration reverse proxy.
Demo reverse proxy cache
Referensi:
https://www.nginx.com/resources/wiki/start/topics/examples/reverseproxycachingexample/
https://www.nginx.com/blog/nginx-caching-guide/
Bagian II. Layanan CDN Komersil
Saat ini terdapat layanan CDN komersial seperti Akamai, SwitfServe, CDN77 dan lainnya. Berikut akan diulas tentang CDN77.com.
CDN pada dasarnya bekerja dalam dua layer:
o DNS Layer
o Reverse Proxy Layer
Layer pertama adalah DNS, dimana pada layer ini client query ke autoritative name server CDN, dan kemudian authoritative name server ini akan memeriksa ip client dan memetakan (dengan logic tertentu) CDN server mana yang terdekat dari posisi client. Bisa per negara. Misal client dengan IP Indonesia maka autoritative name server CDN provider akan informasikan IP server CDN yang ada di IIX Indonesia.
Layer kedua adalah inti dari mesin CDN yaitu reverse proxy (setting dan cara kerja nya sudah dibahas di bagian I diatas).
Step mengaktifkan layanan CDN77: referensi disini.
1. Create CDN resource
Action ini sepertinya untuk membuat server reverse proxy untuk domain kita di masing-masing CDN server yang dimiliki provider CDN di seluruh dunia dan mendaftarkan nama domain nya misal 1234567890.rsc.cdn77.com.
Bisa dibayangkan sbb logic yang ada di DNS Server provider CDN.
1234567890.rsc.cdn77.org IN A 5.5.5.5 (untuk USA)
IN A 6.6.6.6 (untuk Eropa)
IN A 9.9.9.9 (untuk IIX)
Dan resource ini harus di mapping ke Source nya yaitu server kita, misal server kita outcdn.mydomain.com
Artinya ada korelasi
outcdn.mydomain.com <--> 1234567890.rsc.cdn77.org
2. Ubah di server DNS kita menggunakan CNAME
Awalnya
www.mydomain.com IN A 3.3.3.3
incdn.maydomain.com IN A 4.4.4.4
Menjadi
www.mydomain.com IN A 3.3.3.3
outcdn.mydomain.com IN CNAME 1234567890.rsc.cdn77.com
Ganti
<img src="incdn.mydomain.com/path/to/image.jpg" />
dengan CDN URL
<img src="outcdn.mydomain.com"/path/to/image.jpg"/>
Referensi:
https://www.section.io/blog/cdn-reverse-proxy-cdn-comparison/
No comments:
Post a Comment