溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx中怎么配置uwsgi服務(wù)做緩存

發(fā)布時(shí)間:2021-08-11 15:17:16 來(lái)源:億速云 閱讀:176 作者:Leah 欄目:服務(wù)器

今天就跟大家聊聊有關(guān)Nginx中怎么配置uwsgi服務(wù)做緩存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

緩存為什么設(shè)置在nginx層

設(shè)置緩存是必要的,這里就說(shuō)說(shuō)為什么將一些請(qǐng)求的緩存設(shè)置在nginx層,而不是服務(wù)應(yīng)用層。理由如下:

一般來(lái)說(shuō),nginx作為代理服務(wù)器的角色,把緩存設(shè)置在nginx中,在***緩存的情況下,可以節(jié)約一次請(qǐng)求轉(zhuǎn)發(fā)的時(shí)間。

nginx本身使用C語(yǔ)言實(shí)現(xiàn),比一般的語(yǔ)言尤其是動(dòng)態(tài)語(yǔ)言(python等)的性能要高。因此nginx讀取緩存的速度要比后端應(yīng)用讀取的速度快。

歷史項(xiàng)目中沒(méi)有引入緩存,在nginx中加緩存配置比寫應(yīng)用代碼來(lái)得快。

當(dāng)然, 需要由應(yīng)用鑒定用戶權(quán)限的接口并不適合把緩存設(shè)置在nginx層

配置方法

nginx可以代理的服務(wù)協(xié)議有多種(比如 http, uwsgi, fastcgi), 這里以u(píng)wsgi協(xié)議的配置作為例子,其他協(xié)議的基本是把配置指令中  cache前面的 uwsgi替換為協(xié)議對(duì)應(yīng)的文字即可(比如 http 對(duì)應(yīng) proxy, fastcgi 對(duì)應(yīng)  fastcgi)。這里先上一個(gè)基本的配置文件,然后對(duì)關(guān)鍵的配置指令逐一講述它的配置方法及作用。

Nginx中怎么配置uwsgi服務(wù)做緩存

Nginx中怎么配置uwsgi服務(wù)做緩存

以上配置文件中,有cache字樣的都是與緩存相關(guān)的配置指令。它們的作用及配置方法如下:

1.uwsgi_cache_path,配置緩存內(nèi)容存放的位置、命名以及目錄的分配方式。 /tmp/nginx是緩存文件存放的位置;  keys_zone對(duì)應(yīng)的值是緩存空間的名字及大小,此處名字是 myapp, 大小是128M;  levels參數(shù)是設(shè)置緩存文件所存放的子目錄,這里1:2的意思是取緩存key(下文將要講到的  uwsgi_cache_key)的MD5值倒數(shù)***個(gè)字母為1級(jí)目錄,倒數(shù)第二第三個(gè)字母為二級(jí)目錄,在上述配置中key的MD5值為  4897858cede04cdd6676d87fd9e9163e的緩存會(huì)落在  /tmp/nginx/e/63目錄上;inactive參數(shù)是指多長(zhǎng)時(shí)間不被***時(shí),該緩存內(nèi)容會(huì)被刪除,這里是24小時(shí)沒(méi)有***則刪除。除了這里提及的參數(shù)外,還有其他可選參數(shù),見官方文檔  。

2.add_header Nginx-Cache  "$upstream_cache_status",不建議在生產(chǎn)環(huán)境中加入這一行配置,該配置是設(shè)置一個(gè)響應(yīng)頭標(biāo)志緩存***狀態(tài),用于調(diào)試。

3.uwsgi_cache_valid 200 36h,該指令配置緩存哪些狀態(tài)碼的請(qǐng)求及緩存時(shí)間。這里僅當(dāng)響應(yīng)狀態(tài)碼為200時(shí)進(jìn)行緩存,  緩存36小時(shí)。

4.uwsgi_cache_key  $request_method_$request_uri$args,設(shè)置緩存的key,這里設(shè)置為請(qǐng)求方法+請(qǐng)求uri+參數(shù),可以根據(jù)需要使用nginx提供的其他變量。

5.uwsgi_cache_use_stale timeout http_500  http_503,該指令用于配置后端應(yīng)用出現(xiàn)哪種情況時(shí),可以使用過(guò)期的緩存內(nèi)容。

6.uwsgi_cache myapp,設(shè)置使用的緩存空間名字,與 uwsgi_cache_path中的keyszone相對(duì)應(yīng)。該指令支持的上下文有 http、 server和 location, 寫在 location中可以為不同的接口配置不同的空間。

注意事項(xiàng)

說(shuō)了基本配置,接著說(shuō)一些值得注意的地方

uwsgi_cache_key的設(shè)置key可以使用nginx中的變量滿足各種復(fù)雜情況,但是建議不要設(shè)置得過(guò)于復(fù)雜,滿足業(yè)務(wù)需求即可,因?yàn)樵綇?fù)雜***率越低。如果加入了用戶的cookie作為key,就是基于用戶的緩存,只有同一個(gè)用戶再次發(fā)起相同請(qǐng)求時(shí)才會(huì)***,***率很低。

uwsgi_cache_valid的設(shè)置這個(gè)指令一定要配置合理,否則可能會(huì)緩存400等響應(yīng)內(nèi)容。除了200狀態(tài)碼之外,也可以根據(jù)需要為其他狀態(tài)碼的響應(yīng)進(jìn)行緩存,但是緩存時(shí)間應(yīng)該短一點(diǎn)。比如為302的響應(yīng)內(nèi)容緩存10s。

看完上述內(nèi)容,你們對(duì)Nginx中怎么配置uwsgi服務(wù)做緩存有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI