Rumah >Operasi dan penyelenggaraan >Nginx >Cara menggunakan nginx untuk menyimpan fail statik pada pelayan
1. Kelebihan caching nginx
Seperti yang ditunjukkan dalam rajah, caching nginx boleh mengurangkan permintaan pemprosesan pelayan asal kepada tertentu tahap tekanan.
Oleh kerana banyak fail statik (seperti css, js, gambar) tidak dikemas kini dengan kerap. nginx menggunakan proxy_cache untuk cache permintaan pengguna ke direktori tempatan. Permintaan yang sama seterusnya boleh terus memanggil fail cache, tanpa perlu meminta pelayan.
Lagipun, pemprosesan perkhidmatan intensif io adalah kekuatan nginx.
2. Bagaimana untuk menyediakannya
Biar saya berikan anda contoh dahulu:
http{ proxy_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 96k; proxy_temp_file_write_size 96k; proxy_temp_path /tmp/temp_dir; proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g; server { listen 80 default_server; server_name localhost; root /mnt/blog/; location / { } #要缓存文件的后缀,可以在以下设置。 location ~ .*\.(gif|jpg|png|css|js)(.*) { proxy_pass http://ip地址:90; proxy_redirect off; proxy_set_header host $host; proxy_cache cache_one; proxy_cache_valid 200 302 24h; proxy_cache_valid 301 30d; proxy_cache_valid any 5m; expires 90d; add_header wall "hey!guys!give me a star."; } } # 无nginx缓存的blog端口 server { listen 90; server_name localhost; root /mnt/blog/; location / { } } }
Kerana saya sedang menguji pada pelayan , jadi dua port 80 dan 90 digunakan untuk mensimulasikan interaksi antara dua pelayan.
Port 80 disambungkan kepada akses nama domain biasa ().
Port 90 bertanggungjawab untuk memproses akses sumber yang diproksikan oleh port 80.
Bersamaan dengan port 90 sebagai pelayan sumber dan port 80 sebagai pelayan proksi cache terbalik nginx.
Seterusnya mari kita bincangkan tentang item konfigurasi:
2.1 tetapan lapisan http
proxy_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 96k; proxy_temp_file_write_size 96k; proxy_temp_path /tmp/temp_dir; proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
proxy_connect_timeout sambungan masa tamat masa sambungan pelayan Masa
proxy_read_timeout Selepas sambungan berjaya, tunggu masa respons pelayan belakang
proxy_send_timeout masa pemulangan data pelayan belakang
proxy_buffer_size Saiz penimbal
proxy_buffers Bilangan penimbal yang ditetapkan untuk setiap sambungan ialah nombor, dan saiz setiap penimbal ialah saiz
proxy_busy_buffers_size Selepas menghidupkan fungsi respons buffer, jika keseluruhan respons tidak dibaca, apabila penimbal tulis mencapai saiz tertentu, nginx pasti akan menghantar respons kepada klien sehingga penimbal lebih kecil daripada nilai ini .
proxy_temp_file_write_size menetapkan had saiz untuk nginx untuk menulis data ke fail sementara setiap kali
proxy_temp_path Fail sementara yang diterima dari bahagian belakang Laluan storan pelayan
proxy_cache_path menetapkan laluan cache dan parameter lain. Jika data cache tidak diakses dalam masa yang ditentukan oleh parameter tidak aktif (pada masa ini 1 hari), ia akan dialih keluar daripada cache
Tetapan lapisan pelayan 2.2
2.2.1 Pelayan proksi caching terbalik
server { listen 80 default_server; server_name localhost; root /mnt/blog/; location / { } #要缓存文件的后缀,可以在以下设置。 location ~ .*\.(gif|jpg|png|css|js)(.*) { proxy_pass http://ip地址:90; proxy_redirect off; proxy_set_header host $host; proxy_cache cache_one; proxy_cache_valid 200 302 24h; proxy_cache_valid 301 30d; proxy_cache_valid any 5m; expires 90d; add_header wall "hey!guys!give me a star."; } }
proxy_pass nginx cache tidak boleh mendapatkan sumber, minta ini Alamat memajukan permintaan, mendapat yang baharu sumber dan menyimpannya
proxy_redirect menetapkan teks gantian pengepala respons "lokasi" pelayan bahagian belakang dan pengepala respons "refresh"
proxy_set_header membenarkan mentakrifkan semula atau menambah pengepala permintaan dihantar ke pelayan hujung belakang
proxy_cache menentukan memori kongsi yang digunakan untuk cache halaman, sepadan dengan keys_zone yang ditetapkan oleh lapisan http
proxy_cache_valid menetapkan masa cache yang berbeza untuk kod status respons yang berbeza
tamat masa cache
Di sini saya menyediakan imej, css dan sumber statik js untuk caching.
Apabila pengguna memasukkan nama domain, alamat akses ip:port diperoleh melalui analisis. Port lalai kepada 80. Oleh itu, permintaan halaman akan dipintas oleh pelayan semasa dan diproses.
Apabila sumber statik yang berakhir dengan nama fail di atas dihuraikan, sumber statik akan diperoleh daripada kawasan cache.
Jika sumber yang sepadan diperolehi, data akan dikembalikan terus.
Jika ia tidak dapat diperoleh, permintaan akan dimajukan ke alamat yang ditunjukkan oleh proxy_pass untuk diproses.
2.2.2 Pelayan sumber
server { listen 90; server_name localhost; root /mnt/blog/; location / { } }
Di sini, permintaan yang diterima pada port 90 diproses terus dan sumber itu diambil daripada direktori tempatan pelayan /mnt/blog untuk bertindak balas.
3. Bagaimana untuk mengesahkan sama ada cache itu sah
Pembaca yang berhati-hati harus menyedari bahawa saya meninggalkan telur Paskah di dinding add_header perenggan kedua "hey !guys!give saya bintang."
add_header digunakan untuk menetapkan maklumat tersuai dalam pengepala.
Jadi, jika cache itu sah, pengepala yang dikembalikan oleh sumber statik pasti akan membawa maklumat ini.
Hasil akses adalah seperti berikut:
Atas ialah kandungan terperinci Cara menggunakan nginx untuk menyimpan fail statik pada pelayan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!