nginx緩存配置詳解

一、nginx緩存基礎

在高並發、大數據量的情況下,讓網站的訪問速度變快是各大網站運營商必須面對的問題。而Nginx正是為了解決這個問題而生。Nginx提供了一套緩存模塊,用於存儲靜態頁面或動靜分離的頁面,加速訪問並減輕伺服器的負擔。

二、nginx緩存與瀏覽器緩存

在緩存系統中,nginx緩存和瀏覽器緩存是兩個不同的緩存。Nginx緩存是由伺服器端負責緩存網頁,瀏覽器緩存則由客戶端負責存儲緩存。

Nginx緩存和瀏覽器緩存在一定程度上是可以互相銜接的,如果某些靜態資源在Nginx緩存里已經存在,如果設置了瀏覽器緩存功能,那麼之後在瀏覽器里訪問這個靜態資源的時候就直接使用緩存,減輕伺服器的負擔。

三、nginx配置不緩存

如果不希望Nginx緩存某些請求,可以使用「proxy_cache_bypass」指令。這個指令允許你自定義欄位,如果請求的URL匹配該欄位,緩存將被忽略。

location / {
    proxy_cache_bypass $http_pragma;
    proxy_cache_bypass $http_authorization;
}

四、nginx緩存清理的方法

當網站內容發生改變時,需要清理緩存以保證用戶能看到最新的頁面。清除Nginx緩存的方式有兩種:

  • 刪除指定URL的緩存
  • 刪除全部緩存

刪除指定URL的緩存可以使用「proxy_cache_path」指令,將路徑後面加上需要刪除的URL即可。

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
location / {
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;
}
location /purge_cache {
    proxy_cache_bypass 1;
    proxy_cache_revalidate on;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    add_header Content-Type 'text/html; charset=utf-8';
    echo "Purged.";
}

刪除全部緩存可以使用Nginx的緩存清除命令

nginx -s reload
nginx -s stop

五、nginx怎麼配置緩存

緩存是通過location指令指定的,下面是一個基本的配置示例:

proxy_cache_path /data/nginx/cache keys_zone=cache:10m;
server {
  listen 80;
  server_name localhost;
  location / {
    proxy_cache cache;
    proxy_pass $scheme://localhost:8000;
    proxy_cache_min_uses 2;
    proxy_cache_lock on;
    proxy_cache_valid 200 10m;
  }
}

以上配置將使用「/data/nginx/cache」來緩存,將其命名為「cache」,緩存期限為10分鐘,如果一段時間內URL沒有被訪問,則會被鎖定。此外,只有被訪問2次或更多次的頁面才會被緩存。

六、nginx緩存配置詳解

以上是一個基本的nginx緩存配置示例,但是對於不同的網站來說,緩存策略不盡相同,下面將對nginx的緩存配置進行詳細講解:

  • 設置緩存路徑與緩存鍵值
  • proxy_cache_path用於指定緩存的存放路徑以及緩存鍵值。緩存鍵值由$http_host, $request_uri, $scheme等變數組成,這樣可以保證緩存鍵值唯一。

        proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
        
  • 設置緩存的存活時間
  • proxy_cache_valid用於設置緩存的存活時間,可以設置多個HTTP狀態碼及其對應的時間。如果某個狀態碼沒有定義時間,則使用默認的時間。

        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        proxy_cache_valid 500 10s;
        
  • 不緩存指定的HTTP狀態碼
  • proxy_cache_bypass用於定義一個控制緩存的變數,當值為1時,不緩存某些http狀態碼。

        proxy_cache_bypass $http_pragma;
        proxy_cache_bypass $http_authorization;
        
  • 強制刷新緩存
  • proxy_cache_revalidate用於在下一次請求時強制刷新緩存。

        proxy_cache_revalidate on;
        
  • 緩存死亡時刪除緩存
  • 當緩存過期或不再使用時,應該將其刪除,以釋放伺服器上的磁碟空間。這可以通過在Nginx中設置緩存活動時長來實現。

        proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
        

七、nginx緩存功能的作用

Nginx緩存功能的主要作用是減輕伺服器的負擔,快速響應靜態頁面和動靜分離的頁面,加快網站的訪問速度,並提高用戶的體驗。同時還可以減少帶寬費用、降低伺服器負載,提升系統的穩定性以及保障網站的安全性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/180028.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-22 05:10
下一篇 2024-11-22 05:10

相關推薦

  • Python 數據緩存及其應用

    本文將為大家詳細介紹Python數據緩存,並提供相關代碼示例。 一、Python 數據緩存基礎概念 Python 是一種解釋型語言,每次執行完一條語句後就會將內存中的結果清空,如果…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網路應用中流…

    編程 2025-04-29
  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • Java圖片緩存的實現與優化

    Java中的圖片緩存是Web開發中常用的技術,它可以提高網頁的載入速度和用戶體驗。本文將從以下三個方面對Java圖片緩存進行詳細闡述: 一、圖片緩存的基本實現 圖片緩存技術是指將一…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論