Cache di sebelah pelayan VPN kedengaran seperti lebar jalur percuma untuk semua di belakang terowong. Bukan, kerana bait yang melalui titik itu kekal dilindungi sesi TLS yang hujungnya ialah pelayar dan laman web. Get laluan VPN hanya membuang penyulitan luarnya sendiri, bukan penyulitan aplikasi. Tentukan objek berulang mana yang anda mahu guna semula sebelum menambah perkakasan.

Sesi TLS milik pelayar

Dalam HTTPS biasa pelayar berunding kunci dengan laman, dan setiap rekod selepas jabat tangan disulitkan untuk pasangan hujung itu. Get laluan VPN menyahsulit terowong yang diciptanya dan kemudian menghantar rekod TLS legap. Ia boleh melihat destinasi, masa dan isipadu, bukan baris permintaan atau badan respons. Itulah sempadan yang setiap cache mesti hidup dengannya.

Sebarang reka bentuk yang memecahkannya ialah reka bentuk pintasan TLS, dengan akibatnya sendiri pada kepercayaan sijil dan pengurusan peranti.

CONNECT ialah terowong, bukan cache

Proksi hadapan eksplisit biasanya menerima permintaan HTTP CONNECT dan kemudian menyampaikan bait dalam kedua-dua arah. Penyampaian ialah kata kunci: proksi tidak menghurai perbualan yang disulitkan.

curl -sSI -x http://proxy.example:3128 https://example.com/

Pengepala respons datang daripada pengendalian terowong oleh proksi, bukan daripada salinan halaman yang dicache. CONNECT yang berjaya bermaksud laluan berfungsi, bukan bahawa sesuatu disimpan untuk guna semula. Menghalakan port 443 ke cache juga tidak mengajarnya bercakap TLS, kerana caching memerlukan mesej yang boleh dibaca. Konfigurasi klien mesti menggunakan tetapan proksi eksplisit yang disokong, bukan ubah hala tanpa penjelasan.

Cache apa yang anda kendalikan, bukan apa yang anda layari

Apabila kandungan itu milik anda, proksi songsang boleh menamatkan TLS dan menyimpan respons yang diluluskan secara sengaja. Apabila ia milik repositori pakej, gunakan cermin yang disokong projek.

nginx -T | grep -n "proxy_cache"
curl -sSI https://mirror.example/pkg/index.json | grep -i -E "cache-control|age"

Arahan pertama menunjukkan sama ada zon cache dikonfigurasikan dan di mana ia terpakai, manakala yang kedua menunjukkan arahan caching asal itu sendiri untuk satu objek. Cache dikongsi mesti menghormati kesegaran, kawalan cache dan atribut permintaan yang membezakan representasi; private dan no-store membawa maksud berbeza dan kedua-duanya tidak boleh dibuang untuk menaikkan kadar hit. Peraturan caching HTTP juga mengehadkan penyimpanan respons kepada permintaan yang disahkan, dan di situlah halaman peribadi menjadi pendedahan data. Kekalkan proksi terhad kepada klien yang diluluskan dan bukan mendedahkan geganti terbuka.

Ukur hit, bukan jam randik

Permintaan kedua yang lebih pantas tidak membuktikan cache baharu melakukan sesuatu, kerana pelayar dan sistem pengendalian menyimpan cache secara agresif sendiri. Minta pembilang hit dan miss daripada proksi dan perhatikan trafik asal semasa ulangan terkawal. Gunakan satu muat turun berulang objek yang diketahui, dengan cache diaktifkan dan kemudian dipintas, dan bandingkan bait yang disampaikan oleh asal dan bukan masa yang berlalu. Kemudian semak sempadan kebenaran: sumber yang memerlukan log masuk tidak boleh disampaikan kepada klien lain.

Catat beban kerja, kunci cache dan dasar yang membenarkan penggunaan semula. Cache ialah keputusan perkongsian data yang memakai kostum pengoptimuman.

Artikel berkaitan