Pengoptimalan mendalam Nginx
Nginx (engine x) adalah HTTP berkinerja tinggi dan server proxy terbalik, server web ringan dan konkurensi tinggi.
Dalam lingkungan produksi sebenarnya, masih tidak mungkin bagi kami untuk secara langsung menggunakan konfigurasi default Nginx sebagai server. Bagaimanapun, untuk menggunakan server Nginx secara lebih lengkap dan masuk akal, kita harus membuat beberapa penyesuaian yang diperlukan pada konfigurasi default nginx sesuai dengan kebutuhan kita yang sebenarnya.
Pengoptimalan: sembunyikan nomor versi, ubah pengguna dan grup, waktu cache halaman web, pemotongan log, batas waktu koneksi, ubah jumlah proses, kompresi halaman web, tautan anti-pencurian, pengoptimalan parameter FPM
- Sembunyikan nomor versi
- Versi tersembunyi dapat mengurangi risiko diserang oleh JI dan melindungi operasi server yang aman.
- Ubah pengguna dan grup
Proses runtime Nginx membutuhkan dukungan pengguna dan grup untuk menerapkan kontrol akses saat membaca file situs web. Proses utama dibuat oleh root, dan proses anak dibuat oleh pengguna dan grup yang ditentukan. Defaultnya adalah siapa-siapa.
# vim /usr/local/nginx/conf/nginx.conf pengguna nginx nginx; // modifikasi # systemclt mulai ulang nginx # ps aux | grep nginx // Melihat informasi proses nginx (pengguna root dari proses utama, pengguna nginx dari proses anak)- Waktu cache
Ketika Nginx mengembalikan data halaman web ke klien, Anda dapat mengatur waktu cache untuk akses permintaan berulang di masa mendatang untuk mempercepat kecepatan akses dan mengurangi tekanan pada server. Umumnya, sumber daya statis disetel, dan waktu cache tidak disetel untuk halaman web dinamis.
# vim /usr/local/nginx/conf/nginx.conf *** Tambahkan di server: cache selama 1 hari *** lokasi ~ \. (gif | jpg | jepg | png | bmp | ico) $ { root html; kedaluwarsa 1d; } # systemclt mulai ulang nginx- Pemotongan log
#! / bin / bash
#Filename: fenge.sh
d = $ (date -d "-1 day" "+% Y% m% d") #Menampilkan jam sehari yang lalu
logs_path = "/ var / log / nginx"
pid_path = "/ usr / local / nginx / logs / nginx.pid"
|| mkdir -p $ logs_path
mv /usr/local/nginx/logs/access.log $ {logs_path} /test.com-access.log-$d
bunuh -USR1 $ (kucing $ pid_path)
temukan $ logs_path -mtime +30 | xargs rm -rf
# chmod + x fenge.sh # ./fenge.sh # crontab -e // Setel ke tugas terjadwal berkala 01 * * * /opt/fenge.sh // Dieksekusi pada 1:00 setiap hari- Waktu koneksi berakhir
Di situs web umum, untuk mencegah pelanggan yang sama menempati koneksi untuk waktu yang lama dan menyebabkan pemborosan sumber daya, parameter batas waktu koneksi yang sesuai dapat diatur untuk mengontrol waktu akses koneksi.
# vim /usr/local/nginx/conf/nginx.conf http { ... keepalive_timeout 65180; // Atur batas waktu selama 180 detik client_header_timeout 80; client_body_timeout 80; ... }keepalive_timeout 65180;
Parameter pertama: menentukan waktu tunggu koneksi keep-hidup dengan klien, nilai 0 akan menonaktifkan koneksi klien keep-hidup;
Parameter kedua: opsional, tetapkan nilai "Keep-Alive: timeout = time" di kolom header respons;
client_header_timeout 80;
Tentukan periode waktu tunggu untuk menunggu klien mengirim header permintaan
client_body_timeout 80;
Tentukan batas waktu baca isi permintaan
# systemclt restart nginx // Mulai ulang layanan- Ubah jumlah proses
Dalam lingkungan konkurensi tinggi, lebih banyak proses Nginx perlu dimulai untuk memastikan respons cepat, untuk memproses permintaan pengguna, dan menghindari pemblokiran.
# cat / proc / cpuinfo | grep -c "physical" // nomor inti cpu # vim /usr/local/nginx/conf/nginx.conf worker_processes 4; // Ubah ke jumlah inti yang sama atau 2 kali worker_cpu_affinity 0001001001001000; // Setel setiap proses untuk diproses oleh cpu yang berbeda # systemclt restart nginx // Mulai ulang layanan # ps aux | grep nginx // Menampilkan jumlah proses- Kompresi halaman web
Server Nginx memampatkan konten keluaran dan mengirimkannya untuk menghemat bandwidth situs web dan meningkatkan pengalaman akses pengguna. Modul ini telah diinstal secara default.
# vim /usr/local/nginx/conf/nginx.conf gzip aktif; gzip_buffers 464k; gzip_http_version 1.1; gzip_comp_level 2; gzip_min_length 1k; gzip_vary aktif; teks gzip_tipe / teks biasa / aplikasi javascript / teks x-javascript / teks css / aplikasi xml / aplikasi xml / xml + teks rss / jpg teks / png; # systemclt restart nginx // Mulai ulang layanan # curl -I -H "Accept-Encoding: gzip, deflate" 192.168.200.131/ // Minta informasi header ubahsuaian- Optimasi parameter Fpm
Implementasi fungsi parsing PHP Nginx diproses oleh FPM. Untuk meningkatkan kecepatan pemrosesan PHP, parameter modul FPM dapat disesuaikan.
1: Instal lingkungan PHP dengan modul FPM;
2: Ada dua cara untuk memulai proses FPM, yang ditentukan oleh parameter pm, statis dan dinamis, yang pertama akan menghasilkan proses FPM dengan data tetap, dan yang kedua akan menghasilkan proses FPM secara dinamis;
# vi php-fpm.conf pid = jalankan / php-fpm.pid pm = dinamis pm.max_children = 20 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8- Anti lintah,
Di situs web, fungsi anti-lintah umumnya dikonfigurasi untuk menghindari penggunaan ilegal konten situs web, menyebabkan kerugian ekonomi, dan menghindari pemborosan lalu lintas.
# vim /usr/local/nginx/conf/nginx.conf lokasi ~ * \. (jpg | gif | swf) $ { valid_referers tidak ada yang diblokir * .benet.com benet.com; if ($ invalid_referer) { tulis ulang ^ / } } // Saat mencocokkan jpg, gif, swf, return error.png (error.png ditempatkan di direktori situs) # systemclt restart nginx // Mulai ulang layananCetak ulang alamat:
Karya asli penulis
- Jangan cinta tolong jangan sakiti! RNG menggunakan UZI untuk menanggapi peristiwa eksternal: tolong jangan percaya!
- "I Care About You" "Let's Live Up to First Time" Romantic Premiere "Different Female Films" Menggerakkan Beijing
- RNG merilis video permintaan maaf yang menjelaskan alasan kegagalan tersebut, dan UZI berkata untuk pertama kalinya: Akulah yang mempengaruhi rekan satu timnya!