Saya sedang dalam proses merestrukturisasi tumpukan web proyek saya menjadi: nginx -> haproxy -> banyak (apache / rel penumpang) contoh
Beberapa tujuan termasuk:
- satu lokasi untuk caching halaman (saat ini dilakukan melalui rel pada setiap mesin apache)
- konten statis lebih cepat
- hapus ssl dari pipa internal
- ip logging (sebelumnya hilang karena menjalankan haproxy dalam mode tcp)
Aset gambar / stylesheet / javascript di-cache cache, dengan header yang tepat. Caching halaman kami didasarkan pada parameter internal, dan seharusnya tidak menanggapi kontrol cache yang khas. Untuk mencapai tujuan ini, konfigurasi kami terlihat seperti
server {
...
location /really_slow_dynamic_content/ {
root /var/www/tmp;
error_page 404 = @fetch;
}
location @fetch {
internal;
proxy_pass haproxy_ip;
proxy_store /var/www/tmp${uri}_cache.html;
proxy_store_access user:rw group:rw all:r;
}
location /assets/ {
proxy_pass haproxy_ip;
proxy_cache assets;
}
location / {
proxy_pass haproxy_ip;
}
}
Saya tidak terlalu banyak sysadmin, dan saya tahu ada banyak alternatif / tweak / tambahan yang mungkin bisa membantu. Saya juga tidak begitu mengerti perbedaan antara proxy_cache dan proxy_store. Jadi untuk pertanyaan saya yang sebenarnya ...
Sampai kita memindahkan aset ke mesin nginx, apakah masuk akal untuk menggunakan proxy_cache untuk aset dan proxy_store untuk konten dinamis yang lambat?
Juga, jika ada pertimbangan atau perangkat lunak lain yang harus saya pertimbangkan, saya akan senang mendengarnya. Terima kasih!
Sejak memposting pertanyaan ini, saya menyadari bahwa konfigurasi awal yang saya gunakan tidak menggunakan toko sama sekali, dan bahwa error_page dan pengaturan internal dari contoh wiki resmi (semi?) Tidak sepenuhnya opsional (konfigurasi diperbarui di sini sejak tampaknya berfungsi, dan konfigurasi yang berfungsi sepertinya merupakan warisan yang lebih baik untuk pertanyaan ini). Jadi, menggunakan toko untuk membuat halaman penuh yang lambat (dan jarang diperbarui), dan cache sebenarnya untuk gambar, javascript, dan semacamnya tampaknya bekerja cukup baik untuk kita. Saya akan menerima satu jawaban, karena setidaknya memberi saya petunjuk untuk melacak masalah saya, tetapi saya masih tidak memiliki perasaan apakah saya menggunakan dua arahan dengan cara yang mereka maksudkan atau tidak (well, setidaknya tidak mengenai toko, cache tampaknya sedikit lebih jelas).
Jawaban:
Jika memori melayani saya dengan benar, proxy_store menyimpan representasi biner dari permintaan untuk suatu item sedangkan proxy_cache menyimpan salinan cache dari item dalam bentuk dasar itu.
proxy_cache sebenarnya adalah mesin caching yang tepat dengan beberapa level dan cocok untuk menyimpan konten dari banyak situs menggunakan kunci yang sama.
Saya pribadi menggunakan proxy_cache untuk menyimpan lebih dari 2 miliar gambar produk di setiap server konten statis kami.
sumber
proxy_store digunakan untuk membuat mirror objek 'on demand'. Ini menempatkan item di jalur yang sama dengan item yang diberikan ada di backend.
Dalam hal konten dinamis lambat, proxy_cache lebih tepat, karena mendukung kadaluwarsa cache.
Contoh di mana proxy_store lebih bermanfaat mungkin adalah mirror file rpm di mana satu nama file / versi tidak perlu kedaluwarsa .
sumber