小編給大家分享一下Nginx中FastCGI配置優(yōu)化的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)主營海州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,海州h5微信小程序開發(fā)搭建,海州網(wǎng)站營銷推廣歡迎海州等地區(qū)企業(yè)咨詢
FastCGI:
FastCGI是從CGI發(fā)展改進(jìn)而來的。傳統(tǒng)CGI接口方式的主要缺點是性能很差,因為每次HTTP服務(wù)器遇到動態(tài)程序時都需要重新啟動腳本解析器來執(zhí)行解析,然后結(jié)果被返回給HTTP服務(wù)器。這在處理高并發(fā)訪問時,幾乎是不可用的。另外傳統(tǒng)的CGI接口方式安全性也很差,現(xiàn)在已經(jīng)很少被使用了。
FastCGI接口方式采用C/S結(jié)構(gòu),可以將HTTP服務(wù)器和腳本解析服務(wù)器分開,同時在腳本解析服務(wù)器上啟動一個或者多個腳本解析守護(hù)進(jìn)程。當(dāng)HTTP服務(wù)器每次遇到動態(tài)程序時,可以將其直接交付給FastCGI進(jìn)程來執(zhí)行,然后將得到的結(jié)果返回給瀏覽器。這種方式可以讓HTTP服務(wù)器專一地處理靜態(tài)請求或者將動態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,這在很大程度上提高了整個應(yīng)用系統(tǒng)的性能。
Nginx不支持對外部程序的直接調(diào)用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調(diào)用。FastCGI接口在Linux下是socket,(這個socket可以是文件socket,也可以是ip socket)。為了調(diào)用CGI程序,還需要一個FastCGI的wrapper(wrapper可以理解為用于啟動另一個程序的程序),這個wrapper綁定在某個固定socket上,如端口或者文件socket。當(dāng)Nginx將CGI請求發(fā)送給這個socket的時候,通過FastCGI接口,wrapper接納到請求,然后派生出一個新的線程,這個線程調(diào)用解釋器或者外部程序處理腳本并讀取返回數(shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過FastCGI接口,沿著固定的socket傳遞給Nginx;最后,Nginx將返回的數(shù)據(jù)發(fā)送給客戶端,這就是Nginx+FastCGI的整個運作過程。詳細(xì)的過程,如圖所示。
例子:
Nginx中FastCGI參數(shù)的優(yōu)化配置實例
在配置完成Nginx+FastCGI之后,為了保證Nginx下PHP環(huán)境的高速穩(wěn)定運行,需要添加一些FastCGI優(yōu)化指令。下面給出一個優(yōu)化實例,將下面代碼添加到Nginx主配置文件中的HTTP層級。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_cache TEST; fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m;
上述代碼的含義:
第一行代碼是為FastCGI緩存指定一個文件路徑、目錄結(jié)構(gòu)等級、關(guān)鍵字區(qū)域存儲時間和非活動刪除時間。
fastcgi_connect_timeout指定連接到后端FastCGI的超時時間。
fastcgi_send_timeout指定向FastCGI傳送請求的超時時間,這個值是已經(jīng)完成兩次握手后向FastCGI傳送請求的超時時間。
fastcgi_read_timeout指定接收FastCGI應(yīng)答的超時時間,這個值是已經(jīng)完成兩次握手后接收FastCGI應(yīng)答的超時時間。
fastcgi_buffer_size用于指定讀取FastCGI應(yīng)答第一部分需要用多大的緩沖區(qū),這個值表示將使用1個64KB的緩沖區(qū)讀取應(yīng)答的第一部分(應(yīng)答頭),可以設(shè)置為fastcgi_buffers選項指定的緩沖區(qū)大小。
fastcgi_buffers指定本地需要用多少和多大的緩沖區(qū)來緩沖FastCGI的應(yīng)答請求。如果一個PHP腳本所產(chǎn)生的頁面大小為256KB,那么會為其分配4個64KB的緩沖區(qū)來緩存;如果頁面大小大于256KB,那么大于256KB的部分會緩存到fastcgi_temp指定的路徑中,但是這并不是好方法,因為內(nèi)存中的數(shù)據(jù)處理速度要快于硬盤。一般這個值應(yīng)該為站點中PHP腳本所產(chǎn)生的頁面大小的中間值,如果站點大部分腳本所產(chǎn)生的頁面大小為256KB,那么可以把這個值設(shè)置為“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size的默認(rèn)值是fastcgi_buffers的兩倍。
fastcgi_temp_file_write_size表示在寫入緩存文件時使用多大的數(shù)據(jù)塊,默認(rèn)值是fastcgi_buffers的兩倍。
fastcgi_cache表示開啟FastCGI緩存并為其指定一個名稱。開啟緩存非常有用,可以有效降低CPU的負(fù)載,并且防止502錯誤的發(fā)生,但是開啟緩存也會引起很多問題,要視具體情況而定。
fastcgi_cache_valid、fastcgi用來指定應(yīng)答代碼的緩存時間,實例中的值表示將200和302應(yīng)答緩存一個小時,將301應(yīng)答緩存1天,其他應(yīng)答均緩存1分鐘。
以上是“Nginx中FastCGI配置優(yōu)化的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前名稱:Nginx中FastCGI配置優(yōu)化的方法
轉(zhuǎn)載注明:http://www.chinadenli.net/article44/pidjhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、云服務(wù)器、App設(shè)計、動態(tài)網(wǎng)站、軟件開發(fā)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)