這篇“Nginx中的FastCGI怎么配置優(yōu)化”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx中的FastCGI怎么配置優(yōu)化”文章吧。
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、子洲ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的子洲網(wǎng)站制作公司
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分鐘。
以上就是關(guān)于“Nginx中的FastCGI怎么配置優(yōu)化”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章題目:Nginx中的FastCGI怎么配置優(yōu)化
網(wǎng)站URL:http://m.newbst.com/article4/pgcioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、微信公眾號、關(guān)鍵詞優(yōu)化、服務(wù)器托管、品牌網(wǎng)站設(shè)計、網(wǎng)站營銷
聲明:本網(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)