當前位置:首頁 » 存儲配置 » nginx存儲

nginx存儲

發布時間: 2022-11-26 15:42:39

『壹』 Nginx作為緩存服務

  上一篇文章講了Nginx作為代理服務的使用方式,這篇文章我們講一講Nginx作為緩存服務是怎麼工作的,以及實戰的使用。
  先看一張圖:

  面對第一次客戶端的應用Nginx需要從後端的服務獲取數據,對於後續的請求,Nginx若進行了緩存就不再從後端服務獲取數據。

語法:proxy_cache_path path [levels=levels].只能用在http中。

  proxy_cache zone | off。默認是關閉的,可以用在http,server,location中。

訪問zzm這個路徑的時候,會返回配置文件中的spring.s項,具體值可以參考我們的啟動設置:

三個後台金正分別對應6000埠,6001埠,6002埠

所以我們訪問ip:port/zzm的時候會自動去訪問後台

我們首先注釋掉proxy_cache zzm_cache;進行訪問,也就是沒有緩存的情況下,訪問3次:

我們可以看到沒有緩存的情況下,會進行輪詢訪問,每次訪問的結果不一樣,而且我們的緩存路徑什麼都沒有,讓我想起了一首歌空空如也:

好奇的看了下目錄下的文件內容:

add_header Nging-Cache "$upstream_cache_status";

當我們沒有緩存的時候,我們可以看到應答會是MISS:

現在nginx.conf中加入新的配置項:

此時我們怒刷前端頁面,會發現後端日誌如下:

Nginx的緩存服務就講到這里,歡迎大家指正

『貳』 nginx是用於存儲

不是
Nginx是一個Web伺服器,也可以用作反向代理,負載平衡器和 HTTP緩存。該軟體由Igor Sysoev 創建,並於2004年首次公開發布。同名公司成立於2011年,以提供支持。 Nginx是一款免費的開源軟體,根據類BSD許可證的條款發布。

『叄』 nginx 緩存機制

Nginx緩存的基本思路
基本思想是利用客戶訪問的時間局部性原理,對客戶已經訪問過的內容在Nginx伺服器本地建立副本,這樣在一段時間內再次訪問該數據,就不需要通過Nginx伺服器再次向後端伺服器發出請求,所以能夠減少Nginx伺服器與後端伺服器之間的網路流量,減輕網路擁塞,同時還能減小數據傳輸延遲,提高用戶訪問速度。同時,當後端伺服器宕機時,Nginx伺服器上的副本資源還能夠回應相關的用戶請求,這樣能夠提高後端伺服器的魯棒性。

對於緩存,我們大概會有以下問題:
(1)緩存文件放在哪兒?
(2)緩存的空間大小是否可以限定?
(3)如何指定哪些請求被緩存?
(4)緩存的有效期是多久?
(5)對於某些請求,是否可以不走緩存?

解決這些問題後,nginx的緩存也就基本配置完成了,下面看詳細配置過程
開啟緩存

要使用緩存,首先要使用 proxy_cache_path 這個指令(必須放在 http 上下文的頂層位置),然後在目標上下文中使用 proxy_cache 指令

配置示例

proxy_cache_path 有兩個必填參數,第一個參數為 緩存目錄,第二個參數keys_zone指定緩存名稱和佔用內存空間的大小(註:示例中的10m是對內存中緩存內容元數據信息大小的限制,如果想限制緩存總量大小,需要用 max_size 參數)

proxy_cache 的參數為之前指定的緩存名稱

緩存管理的相關進程
在緩存工作中有兩個附加進程:
(1)緩存管理器
定期檢查緩存狀態,看緩存總量是否超出限制,如果超出,就移除其中最少使用的部分
(2)緩存載入器
載入器只在nginx啟動後運行一次,把緩存內容的元數據信息載入到內存空間,如果一次性載入全部緩存信息,會大量消耗資源,使nginx在啟動後的幾分鍾里變慢,為避免此問題,有3種載入策略:
loader_threshold – 指定每次載入執行的時間
loader_files – 每次最多載入的數量
loader_sleeps – 每次載入的延時
例如:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
指定緩存哪些請求
nginx默認會緩存所有 get 和 head 方法的請求結果,緩存的key默認使用請求字元串
(1)自定義key
例如 proxy_cache_key " request_uri cookie_nocache arg_comment;
如果任何一個參數值不為空,或者不等於0,nginx就不會查找緩存,直接進行代理轉發
綜合示例

nginx 緩存機制
三分鍾看懂Nginx伺服器的緩存原理和機制

『肆』 Nginx緩存設置教程

| 這篇文章主要介紹了Nginx緩存設置案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下 |

在開發調試web的時候,經常會碰到因瀏覽器緩存(cache)而經常要去清空緩存或者強制刷新來測試的煩惱,提供下apache不緩存配置和nginx不緩存配置的設置。在常用的緩存設置裡面有兩種方式,都是使用add_header來設置:分別為Cache-Control和Pragma。

對於站點中不經常修改的靜態內容(如圖片,JS,CSS),可以在伺服器中設置expires過期時間,控制瀏覽器緩存,達到有效減小帶寬流量,降低伺服器壓力的目的。

以Nginx伺服器為例:

【背景】:Expires是Web伺服器響應消息頭欄位,在響應http請求時告訴瀏覽器在過期時間前瀏覽器可以直接從瀏覽器緩存取數據,而無需再次請求。

【相關資料】

1、Cache-control策略

Cache-Control與Expires的作用一致,都是指明當前資源的有效期,控制瀏覽器是否直接從瀏覽器緩存取數據還是重新發請求到伺服器取數據。只不過Cache-Control的選擇更多,設置更細致,如果同時設置的話,其優先順序高於Expires。

http協議頭Cache-Control :

值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

各個消息中的指令含義如下:

Last-Modified/If-Modified-Since

其最終達到的就是等效於設置這三類html緩存技術:

『伍』 Nginx 配置日誌以天為單位分開保存

伺服器上nginx的日誌體積日益增大,已經到了打開都要載入很久的地步了,無法忍受,想配置日誌按天保存,方便查看。網上搜了一下,基本有兩種思路:

主要思路是寫一個定時任務腳本,每天特定時間把現在的日誌重命名,XXXX2021-01-05.log,然後 nginx -s reopen 重啟nginx來實現目的。
考慮了一下nginx重啟會導致線上項目服務終止影響用戶體驗,所以放棄了。

通過nginx.conf配置來實現自動化的按天保存日誌,nginx無需重啟,好處顯而易見,我選擇了這種方式實現。

$time_iso8601 是nginx 內嵌變數,可以用來獲取當前時間,時間格式如下: 2018-09-21T16:01:02+02:00 。然後使用 正則表達式 來獲取所需時間的數據。按yyyy-mm-dd格式獲取當前日期的字元串,通過變數 $time 來設置日誌文件名,這樣當日期改變時,日誌文件名就會更新,nginx會以新的文件名記錄日誌,實現按天保存日誌的效果。

實現過程並不順利,主要遇到了以下幾個問題。
1. access_log 可以通過變數配置文件名,但是 error_log 用同樣的方法配置後不生效,不過 error_log 的記錄相對較少,目前還不是問題,暫時放棄。
2.保證日誌目錄可被 nginx 用戶組有讀寫許可權,這個踩坑了,配置後日誌目錄下沒有出現日誌,nginx.conf里配置的用戶名是 nginx ,改了許可權之後就可以正常生成了。

『陸』 nginx是什麼意思

意思是一種伺服器。

Nginx (engine x)是一個高性能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布於2004年10月4日。

其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。

介紹

Nginx是一款輕量級的Web伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like協議下發行。

其特點是佔有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站用戶有:網路、京東、新浪、網易、騰訊、淘寶等。

Nginx可以在大多數UnixLinux OS上編譯運行,並有Windows移植版。Nginx的1.4.0穩定版已經於2013年4月24日發布,一般情況下,對於新建站點,建議使用最新穩定版作為生產版本,已有站點的升級急迫性不高。

『柒』 nginx緩存(proxy_cache模塊)

緩存的基本思想是利用客戶端訪問的時間局限性,將客戶端訪問過的內容做一個副本,在一定時間內存放到本地,當改數據下次被訪問時,不必連接到後端伺服器反復去查詢數據,而是由本地保存的副本響應數據。

保存在本地的這些副本具有一個過期時間,超過該時間將會更新。判斷一個副本數據是否為過期數據的辦法有很多,可以使用保留時間來判斷,也可以使用數據完整度來判斷。

許多Web伺服器還具有校驗功能,就是當某些副本數據過期以後,先向後端伺服器發送校驗請求,後端伺服器對這些數據進行校驗,如果發現原數據和副本沒有差別,則將過期副本重新置為可用副本。

以上nginx配置結合使用:

proxy_params文件的配置如下:

訪問一次頁面,並向 http://www.blogs-s.com:8080/api/ 發起一個介面數據請求,查看/cache/nginx目錄下的緩存結果:

ngx_cache_purge是nginx的第三方模塊,能夠幫助我清除nginx中的緩存。

在之前的nginx編譯安裝中我們是沒有把緩存的清除模塊ngx_cache_purge編譯進去的,如果啟動了緩存,沒有安裝這個模塊,在之後的調試中我們嘗試去清除緩存時,將會出現異常:

這個異常是在指示我們,找不到該指令的驅動,需要按照相關模塊。

ngx_cache_purge只是nginx的第三方模塊,並不是某個特殊的軟體,所以我們需要對nginx重新進行編譯,操作如下:

配置nginx:

再一次啟動nginx成功;

接下來進行緩存清除測試,訪問: http://blogs.com/clear_cache/api/index.php , 訪問這個連接將會清除介面: http://blogs.com/api/index.php 的緩存數據。

結果如下:

在項目開發中,不可能出現什麼都需要緩存的數據,緩存僅僅適合去緩存查詢頻繁,但是不需要實時更新的數據,這個是它適合的場景,而我們上面的配置,只要是訪問api介面目錄就會緩存介面的數據,這樣對於一些需要實時更新的介面數據來說是不合理的,需要控制好nginx的緩存去緩存什麼以及不緩存什麼

set 指令為變數設置,proxy_no_cache參數中的值可以設置多個,但是多個值中,只要有一個是不為0的,就會通過緩存響應數據。

該指令用於配置一塊公用的內存區域的名稱,該區域可以存放緩存的索引數據。這些數據在Nginx伺服器啟動時由緩存索引重建進程負責建立,在Nginx伺服器的整個運行過程中由緩存管理進程負責定時檢測過期數據,檢索等管理工作。

該指令用於配置Nginx伺服器向客戶端發送響應數據時,不從緩存中獲取的條件。這些條件支持使用Nginx 配置的常用變數。

看一個例子:

其中,Scookie_nocache、Sarg_nocache、Sarg_comment、Shttp_pragma 和Shttp_authorization 都是Nginx配置文件的變數,

該指令用於設置Nginx伺服器在內存中為緩存數據建立索引時使用的關鍵字

如果我們希望緩存數據包含伺服器主機名稱等關鍵字,則可以將該指令設置為:

該指令用於設置是否開啟緩存的鎖功能。在緩存中,某些數據項可以同時被多個請求返回的響應數據填充。開啟該功能後,Nginx伺服器同時只能有一個請求填充緩存中的某一數據項,這相當於給該數據項上鎖,不允許其他請求操作。其他的請求如果也想填充該項,必須等待該數據項的鎖被釋放。這個等待時間由 proxy_cache_lock_timeout 指令配置。

該指令用於設置緩存的鎖功能開啟以後鎖的超時時間。具體細節參見proxy_cache_lock 指令的相關內容

其中,time為設置的時間,默認為5s。

該指令用於設置客戶端請求發送的次數,當客戶端向被代理伺服器發送相同請求達到該指令設定的次數後,Nginx伺服器才對該請求的響應數據做緩存。合理設置該值可以有效地降低硬碟上緩存數據的數量,並提高緩存的命中率。

其中,number為設置的次數。默認設置為1。

該指令用於設置Nginx伺服器存儲緩存數據的路徑以及和緩存索引相關的內容

該指令設置比較復雜,一般需要設置前面三個指令的情形比較多,後面的幾個變數與Nginx伺服器緩存索引重建進程及管理進程的性能相關,一般情況下保持默認設置就可以了。我們來看幾個簡單的配置實例:

如果Nginx在訪問被代理伺服器過程中出現被代理的伺服器無法訪問或者訪問錯誤等現象時,Nginx伺服器可以使用歷史緩存響應客戶端的請求,這些數據不一定和被代理伺服器上最新的數據相一致,但對於更新頻率不高的後端伺服器來說,Nginx伺服器的該功能在一定程度上能夠為客戶端提供不間斷訪問。該指令用來設置一些狀態,當後端被代理的伺服器處於這些狀態時,Nginx伺服器啟用該功能。

該指令可以支持的狀態如語法結構中所示。

該指令可以針對不同的HTTP響應狀態設置不同的緩存時間,

該指令同於配置在什麼情況下不使用cache功能

該指令配置是否在本地磁碟緩存來自被代理伺服器的響應數據。這是Nginx伺服器提供的另一種緩存數據的方法,但是該功能相對 Proxy Cache簡單一些,它不提供緩存過期更新、內存索引建立等功能,不佔用內存空間,對靜態數據的效果比較好。

Proxy Store方法多使用在被代理伺服器端發生錯誤的情況下,用來緩存被代理伺服器的響應數據。

該指令用於設置用戶或用戶組對Proxy Store緩存的數據的訪問許可權,

有關Proxy Store方法的使用,我們通過官方給出的實例加深理解,在該實例中筆者通過注釋對配置做了說明:

『捌』 Nginx文件描述符緩存--open_file_cache

標簽(空格分隔): nginx

NGINX雖然已經對靜態內容做過優化。但在高流量網站的情況下,仍然可以使用open_file_cache進一步提高性能。 NGINX緩存將最近使用的文件描述符和相關元數據(如修改時間,大小等)存儲在緩存中。緩存不會存儲所請求文件的內容。

啟用此指令將存儲以下信息的緩存:

如下例子:

在上述配置中,為1,000個元素定義了一個緩存。 inactive參數配置到期時間為20秒。 沒有必要為該指令設置非活動時間段,默認情況下,非活動時間段為60秒。
NGINX還定義了一些相關的指令,可用於在錯誤和有效性檢查期間配置open_file_cache的行為。

NGINX的open_file_cache保存信息的快照。 由於信息在源處更改,快照可能在一段時間後無效。 open_file_ cache_valid指令定義時間段(以秒為單位),之後將重新驗證open_file_cache中的元素。默認情況下,60秒後重新檢查元素。 如下例子:

NGINX將在非活動時間段之後從高速緩存中清除元素。 此指令可用於配置最小訪問次數以將元素標記為活動使用。 默認情況下,最小訪問次數設置為1次或更多次。如下例子

如前所述,NGINX可以緩存在文件訪問期間發生的錯誤。但是這需要通過設置open_file_cache_errors指令來啟用。 如果啟用錯誤緩存,則在訪問資源(不查找資源)時,NGINX會報告相同的錯誤。默認情況下,錯誤緩存設置為關閉。

『玖』 Nginx 最全操作——nginx反向代理(5)

將 NGINX 配置為 HTTP 和其他協議的反向代理,支持修改請求標頭和微調的響應緩沖。

本文介紹代理伺服器的基本配置。您將學習如何通過不同的協議將請求從 NGINX 傳遞到代理伺服器,修改發送到代理伺服器的客戶端請求標頭,以及配置來自代理伺服器的響應的緩沖。

代理通常用於在多個伺服器之間分配負載,無縫顯示來自不同網站的內容,或通過 HTTP 以外的協議將處理請求傳遞給應用程序伺服器。

當 NGINX 代理請求時,它會將請求發送到指定的代理伺服器,獲取響應,然後將請求發送回客戶端。可以使用指定的協議將請求代理到 HTTP 伺服器(另一個 NGINX 伺服器或任何其他伺服器)或非 HTTP 伺服器(可以運行使用特定框架開發的應用程序,例如 PHP 或 Python)。支持的協議包括FastCGI、uwsgi、SCGI和memcached。

要將請求傳遞給 HTTP 代理伺服器,需要在location中指定proxy_pass指令。例如:

此示例配置導致將在此位置處理的所有請求傳遞到指定地址的代理伺服器。此地址可以指定為域名或者 IP 地址。該地址還可能包括一個埠:

注意,在上面的第一個例子中,代理的伺服器的地址後面是一個URI, /link/ 。如果 URI 與地址一起指定,它將替換請求 URI 中與 location 參數匹配的部分。例如,這里帶有 /some/path/page.html URI的請求將被代理到 http://www.example.com/link/page.html . 如果指定的地址沒有問題 URI,或者無法確定要替換的 URI 部分,則傳遞完整的請求 URI(可能已修改)。

要將請求傳遞給非 HTTP 代理伺服器, **_pass 應使用適當的指令:

請注意,在這些情況下,指定地址的規則可能不同。您可能還需要將其他參數傳遞給伺服器(有關詳細信息,請參閱參考文檔)。

proxy_pass指令也可以指向一組命名的伺服器。在這種情況下,請求根據指定的方法在組中的伺服器之間分發。

默認情況下,NGINX 重新定義代理請求中的兩個 header 欄位,「Host」和「Connection」,並消除值為空字元串的 header 欄位。「Host」設置為 $proxy_host 變數,「Connection」設置為 close 。

要更改這些設置以及修改其他標頭欄位,請使用proxy_set_header指令。該指令可以在某個位置或更高位置指定。它也可以在特定的伺服器上下文或http塊中指定。例如:

在此配置中,「主機」欄位設置為$host變數。

要防止標頭欄位被傳遞到代理伺服器,請將其設置為空字元串,如下所示:

默認情況下,NGINX 緩沖來自代理伺服器的響應。響應存儲在內部緩沖區中,並且在收到整個響應之前不會發送到客戶端。緩沖有助於優化慢速客戶端的性能,如果響應從 NGINX 同步傳遞到客戶端,這可能會浪費代理伺服器的時間。但是,當啟用緩沖時,NGINX 允許代理伺服器快速處理響應,而 NGINX 存儲響應的時間與客戶端下載它們所需的時間一樣長。

負責啟用和禁用緩沖的指令是proxy_buffering。默認情況下,它設置為 on 並啟用緩沖器。

該proxy_buffers指令控制規模和分配的請求緩沖區的數目。來自代理伺服器的響應的第一部分存儲在單獨的緩沖區中,其大小由proxy_buffer_size指令設置。這部分通常包含一個相對較小的響應頭,並且可以做得比其餘響應的緩沖區小。

在以下示例中,緩沖區的默認數量增加了,並且響應的第一部分的緩沖區大小小於默認值。

如果禁用緩沖,則在從代理伺服器接收響應的同時將響應同步發送到客戶端。對於需要盡快開始接收響應的快速交互客戶端,此行為可能是可取的。

要在特定位置禁用緩沖,請將proxy_buffering指令放在帶有參數的位置 off ,如下所示:

在這種情況下,NGINX 僅使用proxy_buffer_size配置的緩沖區來存儲響應的當前部分。

反向代理的一個常見用途是提供負載平衡。閱讀免費的選擇軟體負載均衡器的五個理由電子書,了解如何通過快速部署來提高功能、性能和專注於您的應用程序。

如果您的代理伺服器有多個網路介面,有時您可能需要選擇特定的源 IP 地址連接到代理伺服器或上游。如果 NGINX 後面的代理伺服器配置為接受來自特定 IP 網路或 IP 地址范圍的連接,這可能很有用。

指定proxy_bind指令和必要網路介面的 IP 地址:

IP 地址也可以用變數指定。例如, $server_addr 變數傳遞接受請求的網路介面的 IP 地址:

簡單來說,把網路首頁代理到/test路徑,同時把java代理到/testapi,配置如下:

參考鏈接:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

歡迎大家提出不一樣的觀點,我們一起討論,

我是辣個男人,一個運維人。

『拾』 【NGINX入門】3.Nginx的緩存伺服器proxy_cache配置

本文介紹NGINX緩存機制,配置和參數說明。

如圖所示,nginx緩存,可以在一定程度上,減少源伺服器的處理請求壓力。因為靜態文件(比如css,js, 圖片)中,很多都是不經常更新的。nginx使用proxy_cache將用戶的請求緩存到本地一個目錄。下一個相同請求可以直接調取緩存文件,就不用去請求伺服器了。畢竟,IO密集型服務的處理是nginx的強項。

Nginx的緩存加速功能是由proxy_cache(用於反向代理和靜態緩存)和fastcgi_cache(PHP動態緩存)兩個功能模塊完成。

Nginx緩存特點:

先上個例子:

因為我是在一台伺服器上做試驗,所以用了兩個埠 80 和 90 進行模擬兩台伺服器之間的交互。

接下來講一下配置項:

這里我設置了 圖片 、 css 、 js 靜態資源進行緩存。
當用戶輸入 http://wangxiaokai.vip 域名時,解析得到 ip:port 的訪問地址。 port 默認為80。所以頁面請求會被當前server截取到,進行請求處理。
當解析到上述文件名結尾的靜態資源,會到緩存區獲取靜態資源。
如果獲取到對應資源,則直接返回數據。
如果獲取不到,則將請求轉發給 proxy_pass 指向的地址進行處理。

這里直接處理 90 埠接受到的請求,到伺服器本地目錄 /mnt/blog 下抓取資源進行響應。

細心的讀者應該發現,我在第二段例子里,留了個彩蛋 add_header wall "hey!guys!give me a star." 。
add_header 是用於在報頭設置自定義的信息。
所以,如果緩存有效的話,那麼靜態資源返回的報頭,一定會帶上這個信息。

(1)Nginx系列教程(3)nginx緩存伺服器上的靜態文件
https://yq.aliyun.com/articles/752967

(2)proxy_cache
nginx 反向代理之 proxy_cache https://www.cnblogs.com/yyxianren/p/10832172.html

(3)Nginx使用upstream負載均衡和proxy_cache緩存實現反向代理
https://blog.51cto.com/13770206/2163952

熱點內容
怎麼改服務密碼 發布:2025-07-27 19:17:16 瀏覽:634
python小項目源碼 發布:2025-07-27 19:12:19 瀏覽:367
python畫矩形 發布:2025-07-27 19:07:31 瀏覽:993
小米盒子怎麼看配置 發布:2025-07-27 19:00:34 瀏覽:836
百度打開密碼是多少 發布:2025-07-27 18:53:11 瀏覽:21
華為方舟編譯器免費使用 發布:2025-07-27 18:53:08 瀏覽:191
組態王與資料庫連接 發布:2025-07-27 18:52:29 瀏覽:306
dhcp配置錯誤怎麼修復 發布:2025-07-27 18:41:09 瀏覽:817
我的世界tis伺服器的版本 發布:2025-07-27 18:35:50 瀏覽:552
達內軟體編程 發布:2025-07-27 18:33:09 瀏覽:912