


Bagaimana untuk mengkonfigurasi cache kandungan Nginx dan apakah konfigurasi parameter biasa?
Senario penggunaan:
Halaman projek perlu memuatkan banyak data, yang tidak kerap berubah Ia tidak melibatkan penyesuaian diperibadikan secara dinamik untuk setiap permintaan. dan prestasinya tidak baik. Cache keputusan berdasarkan laluan permintaan dan parameter Menggunakan cache nginx akan meningkatkan kelajuan permintaan.
Asas
Anda hanya perlu mengkonfigurasi laluan_cache_proksi dan cache_proksi untuk mendayakan cache kandungan yang pertama digunakan untuk menetapkan laluan cache dan konfigurasi, dan yang terakhir digunakan untuk membolehkan caching .
http { ... proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { proxy_cache mycache; location / { proxy_pass http://localhost:8000; } } }
Perihalan parameter yang sepadan:
1 Direktori cakera tempatan yang digunakan untuk caching ialah /path/to/cache/
2. .levels menetapkan hierarki direktori dua peringkat di /path/to/cache/. Meletakkan sebilangan besar fail dalam satu direktori boleh mengakibatkan akses fail perlahan, jadi untuk kebanyakan penggunaan, kami mengesyorkan hierarki direktori dua peringkat. Jika parameter tahap tidak dikonfigurasikan, nginx akan meletakkan semua fail dalam direktori yang sama.
3.keys_zone Sediakan kawasan memori kongsi, yang digunakan untuk menyimpan kunci cache dan metadata, agak serupa dengan penggunaan pemasa. Meletakkan salinan kunci ke dalam ingatan membolehkan nginx membuat keputusan dengan cepat sama ada permintaan adalah hit atau terlepas tanpa mendapatkan semula cakera, yang sangat meningkatkan kelajuan mendapatkan semula. Ruang memori 1MB boleh menyimpan kira-kira 8,000 kekunci, jadi ruang memori 10MB yang dikonfigurasikan di atas boleh menyimpan hampir 80,000 kekunci.
4.max_size menetapkan had atas cache (10g dalam contoh di atas). Ini adalah pilihan; tidak menyatakan nilai membolehkan cache berkembang dan menggunakan semua ruang cakera yang tersedia. Apabila cache mencapai had ini, pemproses memanggil pengurus cache untuk mengalih keluar fail yang paling kurang digunakan baru-baru ini, sekali gus mengurangkan ruang cache ke bawah had ini.
5.tidak aktif menyatakan berapa lama item boleh kekal dalam ingatan tanpa diakses. Dalam contoh di atas, jika fail tidak diminta dalam masa 60 minit, pengurusan cache akan memadamkannya secara automatik daripada memori, tidak kira sama ada fail itu telah tamat tempoh. Nilai lalai parameter ini ialah 10 minit (10m). Ambil perhatian bahawa kandungan tidak aktif adalah berbeza daripada kandungan tamat tempoh. nginx tidak akan memadamkan kandungan tamat tempoh secara automatik yang ditentukan oleh pengepala kawalan cache (cache-control:max-age=120 dalam contoh ini). Kandungan tamat tempoh hanya akan dipadamkan jika ia tidak diakses dalam masa yang ditentukan oleh tidak aktif. Jika kandungan tamat tempoh diakses, nginx akan menyegarkannya daripada pelayan asal dan mengemas kini pemasa tidak aktif yang sepadan.
6.nginx pada mulanya akan meletakkan fail yang ditakdirkan untuk ditulis ke cache ke dalam kawasan storan sementara Perintah use_temp_path=off mengarahkan nginx untuk menulis fail ini ke direktori yang sama apabila menyimpannya. Kami amat mengesyorkan anda menetapkan parameter kepada off untuk mengelakkan salinan data yang tidak diperlukan dalam sistem fail. use_temp_path telah diperkenalkan dalam versi nginx1.7 dan nginx plus r6.
Akhirnya, arahan proxy_cache mula menyimpan cache kandungan yang urlnya sepadan dengan bahagian lokasi (dalam kes ini, /). Anda juga boleh menambah perintah proxy_cache pada bahagian pelayan, yang akan menggunakan caching pada semua perkhidmatan yang lokasinya tidak menyatakan perintah proxy_cache mereka sendiri.
proses berkaitan cache nginx
Terdapat dua proses nginx tambahan yang terlibat dalam cache:
pengurus cache Bermula secara berkala untuk menyemak status cache. Jika saiz cache melebihi had yang ditetapkan oleh parameter max_size dalam proxy_cache_path, pengurus cache memadamkan data yang diakses baru-baru ini. Di antara pengurus cache bermula, jumlah data cache mungkin melebihi saiz yang dikonfigurasikan secara ringkas.
pemuat cache hanya berjalan sekali, selepas nginx bermula. Ia memuatkan metadata tentang data yang dicache sebelum ini ke dalam kawasan memori yang dikongsi. Memuatkan keseluruhan cache sekali gus mungkin menggunakan sumber yang mencukupi untuk merendahkan prestasi nginx dalam beberapa minit pertama selepas permulaan. Untuk mengelakkan ini, konfigurasikan pemuatan berulang cache dengan memasukkan parameter berikut dalam arahan proxy_cache_path:
loader_threshold - tempoh lelaran dalam milisaat (default Next 200)
loader_files - Bilangan maksimum item dimuatkan semasa satu lelaran (100 secara lalai)
loader_sleeps - Kelewatan antara lelaran , dalam milisaat (50 secara lalai)
Dalam contoh berikut, lelaran berlangsung selama 300 milisaat atau sehingga 200 item dimuatkan:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
Parameter lain yang biasa digunakan
Contoh konfigurasi:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { ... location / { proxy_cache my_cache; # proxy_cache_key "$host$request_uri$cookie_user"; proxy_cache_min_uses 3; proxy_cache_methods get head post; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; # proxy_cache_valid any 5m; proxy_pass http://localhost:8000; } }
Penerangan parameter sepadan:
proxy_cache_key Untuk menukar ciri permintaan yang digunakan semasa mengira kunci, tentukan kunci yang dicache. Ini tidak disyorkan. Contohnya adalah menggunakan nama domain, URL permintaan dan kuki pengguna sebagai kunci, yang bermaksud bahawa halaman akan dicache n kali untuk pengguna yang berbeza Dalam kebanyakan kes ini operasi tidak diperlukan.
proxy_cache_min_uses ialah bilangan minimum permintaan yang mesti menggunakan kunci yang sama sebelum respons dicache.
proxy_cache_methods 为指定要被缓存的请求方式的响应值,默认为 get 和 head,新增其他的需要一起列出来,如上示例所示。
proxy_cache_valid 为响应状态码的缓存时间,示例可以为每个状态码缓存指定时间,也可以使用 any 进行全部状态码的缓存。
清除缓存
需要提前加一个配置,用于标识使用 http purge 方法的请求并删除匹配的 url 对应的缓存。
1.在 http {} 上下文中创建新变量,例如 $purge_method, 他依赖于 $request_method 变量:
http { ... map $request_method $purge_method { purge 1; default 0; } }
2.在 location {} 块中,已经配置缓存的前提下,引入 proxy_cache_purge 参数来指定清除缓存请求的条件。例如在上一步指定的 $request_method
server { listen 80; server_name www.example.com; location / { proxy_pass https://localhost:8002; proxy_cache mycache; proxy_cache_purge $purge_method; } }
配置完并使之生效之后,就可以发送一条 purge 请求来让缓存失效了,例如:
curl -x purge -d – https://www.example.com/*
在该示例中,将清除具有公共 url 部分(由星号通配符指定)的资源。但这些缓存条目不会从缓存中完全删除:它们会保留在磁盘上,直到它们被视为不活动(由proxy_cache_path 中的 inactive参数决定)的时候才完全删除,或缓存清除器(由 proxy_cache_path 中的 purge 决定),或客户端尝试访问它们的时候。
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi cache kandungan Nginx dan apakah konfigurasi parameter biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Cara mengkonfigurasi nama domain Nginx pada pelayan awan: Buat rekod yang menunjuk ke alamat IP awam pelayan awan. Tambah blok hos maya dalam fail konfigurasi Nginx, menyatakan port pendengaran, nama domain, dan direktori akar laman web. Mulakan semula nginx untuk memohon perubahan. Akses konfigurasi ujian nama domain. Nota Lain: Pasang sijil SSL untuk membolehkan HTTPS, pastikan firewall membenarkan trafik port 80, dan tunggu resolusi DNS berkuatkuasa.

Kaedah yang boleh menanyakan versi nginx adalah: gunakan perintah nginx -v; Lihat arahan versi dalam fail nginx.conf; Buka halaman ralat Nginx dan lihat tajuk halaman.

Bagaimana cara mengkonfigurasi nginx di Windows? Pasang Nginx dan buat konfigurasi hos maya. Ubah suai fail konfigurasi utama dan sertakan konfigurasi hos maya. Mulakan atau Muat semula Nginx. Uji konfigurasi dan lihat laman web. Selektif membolehkan SSL dan mengkonfigurasi sijil SSL. Selektif tetapkan firewall untuk membolehkan trafik port 80 dan 443.

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Buat bekas di Docker: 1. Tarik Imej: Docker Pull [Nama Cermin] 2. Buat bekas: Docker Run [Options] [Mirror Name] [Command] 3. Mulailah bekas: Docker Start [Nama Container]

Docker Container Startup Langkah: Tarik Imej Bekas: Run "Docker Pull [Mirror Name]". Buat bekas: Gunakan "Docker Buat [Pilihan] [Nama Mirror] [Perintah dan Parameter]". Mulakan bekas: Jalankan "Docker Start [Nama Container atau ID]". Semak Status Kontena: Sahkan bahawa bekas sedang berjalan dengan "Docker PS".
