Nginx derinlemesine optimizasyonu
Nginx (engine x), hafif, yüksek eşzamanlı web sunucusu olan yüksek performanslı bir HTTP ve ters proxy sunucusudur.
Gerçek üretim ortamında, Nginx'in varsayılan yapılandırmasını bir sunucu olarak doğrudan kullanmamız hala imkansız. Sonuçta, Nginx sunucusunu daha eksiksiz ve makul bir şekilde kullanmak için, gerçek ihtiyaçlarımıza göre nginx'in varsayılan yapılandırmasında bazı gerekli ayarlamaları yapmalıyız.
Optimizasyon: sürüm numarasını gizleme, kullanıcı ve grubu değiştirme, web sayfası önbellek süresi, günlük kesme, bağlantı zaman aşımı, işlem sayısını değiştirme, web sayfası sıkıştırma, hırsızlık önleme bağlantısı, FPM parametre optimizasyonu
Nginx çalışma zamanı süreci, web sitesi dosyalarını okurken erişim kontrolü uygulamak için kullanıcıların ve grupların desteğine ihtiyaç duyar. Ana süreç kök tarafından yaratılır ve alt süreç belirtilen kullanıcı ve grup tarafından oluşturulur.Varsayılan kimse değildir.
# vim /usr/local/nginx/conf/nginx.conf kullanıcı nginx nginx; // değiştir # systemclt yeniden başlat nginx # ps aux | grep nginx // nginx işlem bilgilerini görüntüleyin (ana işlemin kök kullanıcısı, alt sürecin nginx kullanıcısı)Nginx web sayfası verilerini istemciye geri koyduktan sonra, erişim hızını artırmak ve sunucu baskısını azaltmak için gelecekte tekrarlanan istek erişimi için önbellek süresini ayarlayabilirsiniz.Genel olarak, statik kaynaklar ayarlanır ve dinamik web sayfaları için önbellek süresi ayarlanmaz.
# vim /usr/local/nginx/conf/nginx.conf *** Sunucuya ekle: 1 günlük önbellek *** konum ~ \. (gif | jpg | jepg | png | bmp | ico) $ { kök html; 1d'de sona erer; } # systemclt yeniden başlat nginx#! / bin / bash
# Dosya adı: fenge.sh
d = $ (tarih -d "-1 gün" "+% Y% m% d") # Bir gün önceki saati göster
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
kill -USR1 $ (cat $ pid_path)
$ logs_path bul -mtime +30 | xargs rm -rf
# chmod + x fenge.sh # ./fenge.sh # crontab -e // Periyodik zamanlanmış görevlere ayarlayın 01 * * * /opt/fenge.sh // Her gün saat 01: 00'da yürütülürGenel web sitelerinde, aynı müşterinin bağlantıyı uzun süre meşgul etmesini ve kaynak israfına neden olmasını önlemek için, ilgili bağlantı zaman aşımı parametresi bağlantı erişim süresini kontrol edecek şekilde ayarlanabilir.
# vim /usr/local/nginx/conf/nginx.conf http { ... keepalive_timeout 65180; // Zaman aşımını 180 saniye olarak ayarlayın client_header_timeout 80; client_body_timeout 80; ... }keepalive_timeout 65180;
İlk parametre: İstemciyle canlı tutma zaman aşımını belirtir; 0 değeri, canlı tutma istemci bağlantısını devre dışı bırakır;
İkinci parametre: isteğe bağlı, yanıt başlığı alanında "Keep-Alive: timeout = time" değerini ayarlayın;
client_header_timeout 80;
İstemcinin istek başlığını göndermesini beklemek için zaman aşımı süresini belirtin
client_body_timeout 80;
İstek gövdesi okuma zaman aşımı süresini belirtin
# systemclt restart nginx // Hizmeti yeniden başlatınYüksek eşzamanlılık ortamında, hızlı yanıt sağlamak, kullanıcı isteklerini işlemek ve engellemeyi önlemek için daha fazla Nginx işleminin başlatılması gerekir.
# cat / proc / cpuinfo | grep -c "fiziksel" // cpu çekirdek numarası # vim /usr/local/nginx/conf/nginx.conf worker_processes 4; // Aynı çekirdek sayısına veya 2 kez değiştirin worker_cpu_affinity 0001001001001000; // Her işlemi farklı bir cpu tarafından işlenecek şekilde ayarlayın # systemclt restart nginx // Hizmeti yeniden başlatın # ps aux | grep nginx // İşlemlerin sayısını görüntüleyinNginx sunucusu çıktı içeriğini sıkıştırır ve web sitesinin bant genişliğini kaydetmek ve kullanıcının erişim deneyimini iyileştirmek için iletir. Bu modül varsayılan olarak yüklenmiştir.
# vim /usr/local/nginx/conf/nginx.conf gzip açık; gzip_buffers 464k; gzip_http_version 1.1; gzip_comp_level 2; gzip_min_length 1k; gzip_vary on; gzip_types metin / düz metin / javascript uygulaması / x-javascript metni / css metni / xml uygulaması / xml uygulaması / xml + rss metni / jpg metni / png; # systemclt restart nginx // Hizmeti yeniden başlatın # curl -I -H "Accept-Encoding: gzip, deflate" 192.168.200.131/ // Özel başlık bilgisi isteyinNginx'in PHP ayrıştırma işlevinin gerçeklenmesi FPM tarafından işlenir.PHP'nin işlem hızını iyileştirmek için FPM modülünün parametreleri ayarlanabilir.
1: PHP ortamını FPM modülüyle kurun;
2: FPM sürecini başlatmanın statik ve dinamik olmak üzere iki yolu vardır: Birincisi sabit verilerle FPM süreçleri oluşturacak ve ikincisi dinamik bir şekilde FPM süreçleri oluşturacaktır;
# vi php-fpm.conf pid = run / php-fpm.pid pm = dinamik pm.max_children = 20 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8Bir web sitesinde, anti-sülük işlevi genellikle web sitesi içeriğinin yasadışı kullanımını önlemek, ekonomik kayıplara neden olmak ve trafik israfını önlemek için yapılandırılır.
# vim /usr/local/nginx/conf/nginx.conf konum ~ * \. (jpg | gif | swf) $ { valid_referers hiçbiri engellendi * .benet.com benet.com; eğer ($valid_referer) { yeniden yaz ^ / } } // jpg, gif, swf eşleştirilirken error.png döndür (error.png site dizinine yerleştirilir) # systemclt restart nginx // Hizmeti yeniden başlatınYeniden yazdırma adresi:
Yazarın orijinal eserleri