nginx umumnya mengirimkan permintaan ke proses manajemen FastCGI untuk diproses, mengambil situs php sebagai contoh, php-fpm adalah implementasi dari protokol Fastcgi, hypervisor yang mengelola php-cgi. Berikut diagram alurnya:
CGI adalah singkatan dari "Common Gateway Interface", alat bagi server HTTP untuk "berbicara" dengan program di mesin Anda atau mesin lain, dan program mereka harus berjalan di server web.
Kekurangan CGI: Ketika setiap permintaan masuk, CGI akan melakukan fork proses baru, dan kemudian mengambil PHP sebagai contoh, setiap permintaan menghabiskan banyak memori, sehingga ketika diluncurkan, itu akan sepenuhnya GG.
Untuk mengatasi masalah ini, fastCgi dibuat.
FastCGI seperti CGI berumur panjang, dapat dieksekusi sepanjang waktu, selama diaktifkan, tidak perlu waktu untuk melakukan fork setiap saat (ini adalah mode fork-and-execute CGI yang paling dikritik). Ini juga mendukung komputasi terdistribusi, yang berarti bahwa program FastCGI dapat dijalankan pada host selain server web dan menerima permintaan dari server web lain.
Ujian
Buat file php baru di bawah direktori D:\dev_tools\nginx-1.20.0\html\php untuk mencegah nginx melaporkan kesalahan 404 ketika file tidak dapat ditemukan, sebagai berikut:
NGINX fastcgi_pass dikonfigurasi sebagai berikut:
Data yang dikirimkan oleh nginx fastcgi_pass perlu diurai sesuai dengan protokol FastCGIJika Anda tertarik, Anda dapat pergi untuk mencari tahu, saya menggunakan sokit di sini untuk mengaktifkan TCP mendengarkan untuk penerimaan sederhana, coba gunakan browser untuk mengakses:http://127.0.0.1:22229/itsvse.php, seperti yang ditunjukkan pada gambar di bawah ini:
22:06:07 DAT ---> [TCP] 127.0.0.1:1032 <1136> ..................... B.... QUERY_STRING.. REQUEST_METHODGET.. CONTENT_TYPE.. CONTENT_LENGTH.. SCRIPT_NAME/itsvse.php.. REQUEST_URI/itsvse.php.. DOCUMENT_URI/itsvse.php." DOCUMENT_ROOTD:/dev_tools/nginx-1.20.0/html/php.. SERVER_PROTOCOLHTTP/1.1..REQUEST_SCHEMEhttp.. GATEWAY_INTERFACECGI/1.1..SERVER_SOFTWAREnginx/1.20.0..REMOTE_ADDR127.0.0.1.. REMOTE_PORT1025.. SERVER_ADDR127.0.0.1.. SERVER_PORT22229.. SERVER_NAME.. REDIRECT_STATUS200.. HTTP_HOST127.0.0.1:22229..HTTP_CONNECTIONkeep-hidup.. HTTP_CACHE_CONTROLmax-age=0.@HTTP_SEC_CH_UA"Kromium"; v="92", " bukan A; Merek"; v="99", "Google Chrome"; v="92".. HTTP_SEC_CH_UA_MOBILE?0..HTTP_UPGRADE_INSECURE_REQUESTS1.sHTTP_USER_AGENTMozilla/5.0 (Windows NT 10.0; Menang64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/92.0.4515.131 Safari/537.36.....HTTP_ACCEPTtext/html, application/xhtml+xml, application/xml; q = 0,9, gambar / avif, gambar / webp, gambar / apng, * / *; q = 0,8, aplikasi / pertukaran yang ditandatangani; v=b3; q = 0.9..HTTP_SEC_FETCH_SITEnone .. HTTP_SEC_FETCH_MODEnavigate.. HTTP_SEC_FETCH_USER?1..HTTP_SEC_FETCH_DESTdocument.. HTTP_ACCEPT_ENCODINGgzip, mengempiskan, br.. HTTP_ACCEPT_LANGUAGEzh-CN, zh; q = 0,9,en; q = 0,8...................... (Akhir)
|