您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Nginx中怎么配置uwsgi服務做緩存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
緩存為什么設置在nginx層
設置緩存是必要的,這里就說說為什么將一些請求的緩存設置在nginx層,而不是服務應用層。理由如下:
一般來說,nginx作為代理服務器的角色,把緩存設置在nginx中,在***緩存的情況下,可以節約一次請求轉發的時間。
nginx本身使用C語言實現,比一般的語言尤其是動態語言(python等)的性能要高。因此nginx讀取緩存的速度要比后端應用讀取的速度快。
歷史項目中沒有引入緩存,在nginx中加緩存配置比寫應用代碼來得快。
當然, 需要由應用鑒定用戶權限的接口并不適合把緩存設置在nginx層
配置方法
nginx可以代理的服務協議有多種(比如 http, uwsgi, fastcgi), 這里以uwsgi協議的配置作為例子,其他協議的基本是把配置指令中 cache前面的 uwsgi替換為協議對應的文字即可(比如 http 對應 proxy, fastcgi 對應 fastcgi)。這里先上一個基本的配置文件,然后對關鍵的配置指令逐一講述它的配置方法及作用。
以上配置文件中,有cache字樣的都是與緩存相關的配置指令。它們的作用及配置方法如下:
1.uwsgi_cache_path,配置緩存內容存放的位置、命名以及目錄的分配方式。 /tmp/nginx是緩存文件存放的位置; keys_zone對應的值是緩存空間的名字及大小,此處名字是 myapp, 大小是128M; levels參數是設置緩存文件所存放的子目錄,這里1:2的意思是取緩存key(下文將要講到的 uwsgi_cache_key)的MD5值倒數***個字母為1級目錄,倒數第二第三個字母為二級目錄,在上述配置中key的MD5值為 4897858cede04cdd6676d87fd9e9163e的緩存會落在 /tmp/nginx/e/63目錄上;inactive參數是指多長時間不被***時,該緩存內容會被刪除,這里是24小時沒有***則刪除。除了這里提及的參數外,還有其他可選參數,見官方文檔 。
2.add_header Nginx-Cache "$upstream_cache_status",不建議在生產環境中加入這一行配置,該配置是設置一個響應頭標志緩存***狀態,用于調試。
3.uwsgi_cache_valid 200 36h,該指令配置緩存哪些狀態碼的請求及緩存時間。這里僅當響應狀態碼為200時進行緩存, 緩存36小時。
4.uwsgi_cache_key $request_method_$request_uri$args,設置緩存的key,這里設置為請求方法+請求uri+參數,可以根據需要使用nginx提供的其他變量。
5.uwsgi_cache_use_stale timeout http_500 http_503,該指令用于配置后端應用出現哪種情況時,可以使用過期的緩存內容。
6.uwsgi_cache myapp,設置使用的緩存空間名字,與 uwsgi_cache_path中的keyszone相對應。該指令支持的上下文有 http、 server和 location, 寫在 location中可以為不同的接口配置不同的空間。
注意事項
說了基本配置,接著說一些值得注意的地方
uwsgi_cache_key的設置key可以使用nginx中的變量滿足各種復雜情況,但是建議不要設置得過于復雜,滿足業務需求即可,因為越復雜***率越低。如果加入了用戶的cookie作為key,就是基于用戶的緩存,只有同一個用戶再次發起相同請求時才會***,***率很低。
uwsgi_cache_valid的設置這個指令一定要配置合理,否則可能會緩存400等響應內容。除了200狀態碼之外,也可以根據需要為其他狀態碼的響應進行緩存,但是緩存時間應該短一點。比如為302的響應內容緩存10s。
看完上述內容,你們對Nginx中怎么配置uwsgi服務做緩存有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。