Nginx ialah pelayan web, pelayan proksi dan pengimbang beban yang biasa digunakan dengan prestasi unggul, keselamatan dan kebolehpercayaan, serta boleh digunakan untuk aplikasi web beban tinggi. Dalam artikel ini, kami akan meneroka tetapan pengoptimuman prestasi dan keselamatan Nginx.
1. Pengoptimuman prestasi
worker_processes ialah parameter penting Nginx. Ia menyatakan bilangan proses pekerja yang boleh digunakan. Nilai ini perlu dilaraskan berdasarkan faktor seperti perkakasan pelayan, lebar jalur rangkaian, jenis beban, dsb. Secara umum, tetapan boleh dibuat berdasarkan bilangan teras CPU atau keupayaan pemprosesan pelayan. Jika CPU pelayan mempunyai berbilang teras, nilai worker_processes boleh ditetapkan kepada 2 kali atau 3 kali ganda bilangan teras.
Sebagai contoh, jika pelayan mempunyai 8 teras CPU, anda boleh menetapkan worker_processes kepada 16 atau 24.
worker_connections ialah satu lagi parameter penting Nginx. Ia menentukan bilangan sambungan serentak yang boleh dikendalikan oleh satu proses pekerja. Nilai ini juga perlu diselaraskan berdasarkan faktor seperti perkakasan pelayan, lebar jalur rangkaian, jenis beban, dsb. Secara umum, tetapan boleh dibuat berdasarkan saiz memori pelayan. Jika memori pelayan cukup besar, worker_connections boleh ditetapkan kepada nilai yang sangat besar untuk meningkatkan keupayaan pemprosesan serentak Nginx.
Sebagai contoh, jika saiz memori pelayan ialah 16GB, anda boleh menetapkan worker_connections kepada 16,384 atau 32,768.
Nginx boleh mengurangkan permintaan kepada pelayan bahagian belakang dengan mendayakan caching. Mendayakan caching boleh meningkatkan kelajuan tindak balas tapak web dan keupayaan pemprosesan serentak. Contohnya, jika kandungan halaman di tapak anda tidak berubah untuk satu tempoh masa, respons untuk halaman tersebut boleh dicache supaya pada kali seterusnya anda memintanya, respons boleh diperoleh terus daripada cache.
Mendayakan caching boleh dicapai dalam dua cara berikut:
① Berdasarkan modul proxy_cache: cache boleh disimpan dalam cakera keras tempatan atau dalam cache yang diedarkan.
② Berdasarkan cache FastCGI: terutamanya perlu menggunakan arahan fastcgi_cache dan fastcgi_cache_path.
Nginx menyokong pemampatan kandungan tindak balas untuk mengurangkan penggunaan lebar jalur rangkaian dan meningkatkan kelajuan tindak balas tapak web. Mendayakan pemampatan gzip boleh mengurangkan saiz kandungan respons dengan ketara, sekali gus meningkatkan kelajuan pemuatan tapak web anda.
Mendayakan pemampatan gzip boleh dicapai dalam dua cara berikut:
① Berdasarkan modul gzip: Anda boleh mendayakan pemampatan gzip dengan menetapkan gzip pada arahan dalam fail nginx.conf.
② Berdasarkan modul pihak ketiga: seperti modul ngx_brotli, modul ngx_deflate, dsb.
Nginx boleh digunakan sebagai pelayan fail statik dan boleh memberikan respons pantas dan keupayaan pemprosesan serentak yang tinggi untuk fail statik. Jika tapak web terutamanya menyediakan muat turun fail statik atau perkhidmatan pecutan CDN, anda boleh secara khusus mendayakan satu contoh Nginx untuk mengendalikan permintaan fail statik, dan satu lagi contoh Nginx untuk mengendalikan permintaan halaman dinamik.
HTTP/2 ialah versi terkini protokol HTTP, yang menyediakan penghantaran data yang lebih cekap dan kelajuan pemuatan halaman web yang lebih pantas. Mendayakan HTTP/2 boleh dicapai dalam dua cara berikut:
① Berdasarkan SSL/TLS: Protokol HTTPS mesti digunakan dan sijil SSL/TLS yang sah mesti dipasang.
② Modul HTTP/2 Nginx: Anda boleh mendayakan protokol HTTP/2 dengan memasang modul HTTP/2 Nginx.
2. Tetapan keselamatan
Serangan DDoS ialah kaedah serangan rangkaian biasa, yang boleh menyebabkan pemberhentian perkhidmatan dan ketepuan lebar jalur dll. soalan. Nginx boleh menghalang serangan DDoS dengan cara berikut:
① Tingkatkan parameter max_connections: anda boleh mengehadkan bilangan maksimum sambungan untuk satu alamat IP.
② Pasang modul sambungan: seperti ngx_http_limit_conn_module dan ngx_http_limit_req_module, yang boleh menghalang serangan DDoS dengan mengehadkan bilangan sambungan dan kadar permintaan.
③ Gunakan penyedia CDN: Menggunakan perkhidmatan CDN boleh mengurangkan beban pada tapak asal dengan menyimpan kandungan statik pada nod tepi CDN, dengan itu meningkatkan keupayaan untuk menahan serangan DDoS.
SQL injection ialah kaedah biasa untuk menyerang aplikasi web, yang boleh mendapatkan maklumat sensitif dengan menyuntik kod SQL berniat jahat ke dalam aplikasi web atau mengawal pangkalan data . Nginx boleh menghalang suntikan SQL dengan cara berikut:
① Gunakan tembok api aplikasi web: Anda boleh menyemak dan menapis data input dengan memasang tembok api aplikasi web.
② Semak fail yang dimuat naik: Anda boleh menggunakan modul ngx_http_upload_module Nginx untuk menyemak fail yang dimuat naik.
③ Gunakan pertanyaan SQL yang selamat: Serangan suntikan SQL boleh dicegah dengan menggunakan pertanyaan berparameter, pembolehubah mengikat, kawalan kebenaran, dsb.
Serangan XSS ialah kaedah serangan aplikasi web yang biasa ia boleh mendapatkan maklumat dan kawalan pengguna dengan memasukkan skrip hasad ke dalam penyemak imbas atau serangan pengguna pengguna lain. Nginx boleh menghalang serangan XSS dengan cara berikut:
① Periksa dan tapis data input: Anda boleh menggunakan tembok api aplikasi web untuk memeriksa dan menapis skrip berniat jahat.
② Gunakan kaedah pengekodan selamat: Anda boleh menggunakan HTML melarikan diri atau pengekodan JavaScript untuk mengelakkan pelaksanaan skrip berniat jahat.
Ringkasnya, Nginx ialah pelayan web yang cekap dan selamat Ia boleh meningkatkan prestasi dengan melaraskan parameter konfigurasi, mendayakan caching dan pemampatan, menyediakan fail statik, dsb., dan boleh menghalang serangan DDoS, suntikan SQL dan serangan XSS. dan kaedah lain untuk memastikan keselamatan laman web. Oleh itu, apabila membina aplikasi web, adalah disyorkan untuk memberi keutamaan untuk menggunakan Nginx sebagai pelayan web dan pengimbang beban.
Atas ialah kandungan terperinci Pengoptimuman prestasi Nginx dan tetapan keselamatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!