這篇“Nginx中的FastCGI怎么配置優(yōu)化”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx中的FastCGI怎么配置優(yōu)化”文章吧。
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開發(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接口方式的主要缺點(diǎn)是性能很差,因?yàn)槊看蝖ttp服務(wù)器遇到動(dòng)態(tài)程序時(shí)都需要重新啟動(dòng)腳本解析器來執(zhí)行解析,然后結(jié)果被返回給http服務(wù)器。這在處理高并發(fā)訪問時(shí),幾乎是不可用的。另外傳統(tǒng)的cgi接口方式安全性也很差,現(xiàn)在已經(jīng)很少被使用了。
fastcgi接口方式采用c/s結(jié)構(gòu),可以將http服務(wù)器和腳本解析服務(wù)器分開,同時(shí)在腳本解析服務(wù)器上啟動(dòng)一個(gè)或者多個(gè)腳本解析守護(hù)進(jìn)程。當(dāng)http服務(wù)器每次遇到動(dòng)態(tài)程序時(shí),可以將其直接交付給fastcgi進(jìn)程來執(zhí)行,然后將得到的結(jié)果返回給瀏覽器。這種方式可以讓http服務(wù)器專一地處理靜態(tài)請(qǐng)求或者將動(dòng)態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,這在很大程度上提高了整個(gè)應(yīng)用系統(tǒng)的性能。
nginx不支持對(duì)外部程序的直接調(diào)用或者解析,所有的外部程序(包括php)必須通過fastcgi接口來調(diào)用。fastcgi接口在linux下是socket,(這個(gè)socket可以是文件socket,也可以是ip socket)。為了調(diào)用cgi程序,還需要一個(gè)fastcgi的wrapper(wrapper可以理解為用于啟動(dòng)另一個(gè)程序的程序),這個(gè)wrapper綁定在某個(gè)固定socket上,如端口或者文件socket。當(dāng)nginx將cgi請(qǐng)求發(fā)送給這個(gè)socket的時(shí)候,通過fastcgi接口,wrapper接納到請(qǐng)求,然后派生出一個(gè)新的線程,這個(gè)線程調(diào)用解釋器或者外部程序處理腳本并讀取返回?cái)?shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過fastcgi接口,沿著固定的socket傳遞給nginx;最后,nginx將返回的數(shù)據(jù)發(fā)送給客戶端,這就是nginx+fastcgi的整個(gè)運(yùn)作過程。詳細(xì)的過程,如圖所示。

例子:

nginx中fastcgi參數(shù)的優(yōu)化配置實(shí)例
在配置完成nginx+fastcgi之后,為了保證nginx下php環(huán)境的高速穩(wěn)定運(yùn)行,需要添加一些fastcgi優(yōu)化指令。下面給出一個(gè)優(yōu)化實(shí)例,將下面代碼添加到nginx主配置文件中的http層級(jí)。
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緩存指定一個(gè)文件路徑、目錄結(jié)構(gòu)等級(jí)、關(guān)鍵字區(qū)域存儲(chǔ)時(shí)間和非活動(dòng)刪除時(shí)間。
fastcgi_connect_timeout指定連接到后端fastcgi的超時(shí)時(shí)間。
fastcgi_send_timeout指定向fastcgi傳送請(qǐng)求的超時(shí)時(shí)間,這個(gè)值是已經(jīng)完成兩次握手后向fastcgi傳送請(qǐng)求的超時(shí)時(shí)間。
fastcgi_read_timeout指定接收fastcgi應(yīng)答的超時(shí)時(shí)間,這個(gè)值是已經(jīng)完成兩次握手后接收fastcgi應(yīng)答的超時(shí)時(shí)間。
fastcgi_buffer_size用于指定讀取fastcgi應(yīng)答第一部分需要用多大的緩沖區(qū),這個(gè)值表示將使用1個(gè)64kb的緩沖區(qū)讀取應(yīng)答的第一部分(應(yīng)答頭),可以設(shè)置為fastcgi_buffers選項(xiàng)指定的緩沖區(qū)大小。
fastcgi_buffers指定本地需要用多少和多大的緩沖區(qū)來緩沖fastcgi的應(yīng)答請(qǐng)求。如果一個(gè)php腳本所產(chǎn)生的頁面大小為256kb,那么會(huì)為其分配4個(gè)64kb的緩沖區(qū)來緩存;如果頁面大小大于256kb,那么大于256kb的部分會(huì)緩存到fastcgi_temp指定的路徑中,但是這并不是好方法,因?yàn)閮?nèi)存中的數(shù)據(jù)處理速度要快于硬盤。一般這個(gè)值應(yīng)該為站點(diǎn)中php腳本所產(chǎn)生的頁面大小的中間值,如果站點(diǎn)大部分腳本所產(chǎn)生的頁面大小為256kb,那么可以把這個(gè)值設(shè)置為“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size的默認(rèn)值是fastcgi_buffers的兩倍。
fastcgi_temp_file_write_size表示在寫入緩存文件時(shí)使用多大的數(shù)據(jù)塊,默認(rèn)值是fastcgi_buffers的兩倍。
fastcgi_cache表示開啟fastcgi緩存并為其指定一個(gè)名稱。開啟緩存非常有用,可以有效降低cpu的負(fù)載,并且防止502錯(cuò)誤的發(fā)生,但是開啟緩存也會(huì)引起很多問題,要視具體情況而定。
fastcgi_cache_valid、fastcgi用來指定應(yīng)答代碼的緩存時(shí)間,實(shí)例中的值表示將200和302應(yīng)答緩存一個(gè)小時(shí),將301應(yīng)答緩存1天,其他應(yīng)答均緩存1分鐘。
以上就是關(guān)于“Nginx中的FastCGI怎么配置優(yōu)化”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章題目:Nginx中的FastCGI怎么配置優(yōu)化
網(wǎng)站URL:http://www.chinadenli.net/article4/pgcioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、微信公眾號(hào)、關(guān)鍵詞優(yōu)化、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)