nginx 配置靜態(tài)緩存及靜態(tài)緩存文件沒有生成的問題及解決方案
nginx 配置靜態(tài)緩存全教程 (以及靜態(tài)緩存文件沒有生成)
一、第一步定義一個緩存目錄設置目錄結構
在 http 模塊下定義(keys_zone = 緩存區(qū)名:后面是緩存區(qū)大小 inactive 不活躍的文件多久清理 max_size 緩存區(qū)所占磁盤的上限 use_temp_path 默認關閉(有需要自己百度))
proxy_cache_path /path/your_cache_dir levels = 1:2 keys_zone=your_cache_name:10g inactive=1h max_size=20g use_temp_path=off;
二、開啟緩存
在 http、server、location 中開啟代理緩存
舉例在location中開啟(將圖片jscsshtml等放入緩存)
server {
listen 8099; #緩存端口或者緩存域名
root /www/wwwroot/static/;
index index.html;
location ~*.\.(png|jpg|css|html)$ {
expires 30m; #緩存過期時間在瀏覽器的緩存時間
proxy_pass http://localhost:8100; # 代理地址非緩存文件的訪問地址,***必須加這個否則生成不來緩存這個***
proxy_cache your_cache_name; #proxy_cache_path中定義的名字
proxy_cache_valid 200 10m; #把狀態(tài)值為200的緩存10分鐘
proxy_cache_valid any 5m; #把狀態(tài)值除來200的緩存5分鐘
proxy_cache_key "$host$request_uri"; #默認key
proxy_cache_revalidate on; #是否開啟驗證緩存的有效性關閉則緩存數據有變化依然請求緩存 開啟則會請求新的
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; #當后臺出現錯誤時跳過
add_header X-Proxy-Cache $upstream_cache_status; #在頭文件新增一個X-Proxy-Cache(自定義)驗證緩存是否命中 Hit命中 miss 沒有命中
}
}
server {
listen 8100; #正式的地址
root /www/wwwroot/static/;
index index.html;
# 其他配置...
}注意事項
nginx 緩存叫代理緩存 應該是有兩臺以上的服務器。如果只有一臺加不同的域名或者端口做區(qū)分。把后臺服務器和緩存服務分開
緩存沒有生成
1、文件夾是否有權限
2、是否設置了proxy_pass(只有走代理才會生成緩存)
Nginx緩存、靜態(tài)文件緩存配置
Nginx靜態(tài)Server基本配置
server {
listen 80; #監(jiān)聽的端口
server_name www.test.com; #監(jiān)聽的域名
charset utf-8;#編碼
root /usr/local/static/www.test.com; #主目錄
index index.html index.htm;#歡迎頁面
}靜態(tài)文件緩存配置
http {
# 這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,
# 建議和打開文件數一致,inactive 是指經過多長時間文件沒被請求后刪除緩
存。
open_file_cache max=204800 inactive=20s;
# open_file_cache 指令中的inactive 參數時間內文件的最少使用次數,
# 如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個
# 文件在inactive 時間內一次沒被使用,它將被移除。
open_file_cache_min_uses 1;
# 這個是指多長時間檢查一次緩存的有效信息
open_file_cache_valid 30s;
# 默認情況下,Nginx的gzip壓縮是關閉的, gzip壓縮功能就是可以讓你節(jié)省不
# 少帶寬,但是會增加服務器CPU的開銷哦,Nginx默認只對text/html進行壓
縮 ,
# 如果要對html之外的內容進行壓縮傳輸,我們需要手動來設置。
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css appl
ication/xml;
server {
listen 80;
server_name www.test.com;
charset utf-8;
root /data/www.test.com;
index index.html index.htm;
}
}基礎緩存配置
proxy_cache_path/path/to/cache levels=1:2 keys_zone=my_cache:10m
max_size=10g inactive=60m
use_temp_path=off;
server {
...
location / {
proxy_cache my_cache;
proxy_pass http://my_upstream;
}
}配置參數說明
proxy_cache_path 命令中的參數及對應配置說明如下: 1. 用于緩存的本地磁盤目錄是 /path/to/cache/ 2. levels 在 /path/to/cache/ 設置了一個兩級層次結構的目錄。將大量的文件放置 在單個目錄中會導致文件訪問緩慢,所以針對大多數部署,我們推薦使用兩級 目錄層次結構。如果 levels 參數沒有配置,則 Nginx 會將所有的文件放到同一 個目錄中。 3. keys_zone 設置一個共享內存區(qū),該內存區(qū)用于存儲緩存鍵和元數據,有些類 似計時器的用途。將鍵的拷貝放入內存可以使 Nginx 在不檢索磁盤的情況下快 速決定一個請求是 HIT 還是 MISS ,這樣大大提高了檢索速度。一個 1MB 的內存空間可以存儲大約 8000個key,那么上面配置的 10MB 內存空間可以存 儲差不多 80000 個 key。 4. max_size 設置了緩存的上限(在上面的例子中是 10G)。這是一個可選項; 如果不指定具體值,那就是允許緩存不斷增長,占用所有可用的磁盤空間。當 緩存達到這個上線,處理器便調用 cache manager 來移除最近最少被使用的 文件,這樣把緩存的空間降低至這個限制之下。 5. inactive 指定了項目在不被訪問的情況下能夠在內存中保持的時間。在上面的 例子中,如果一個文件在 60 分鐘之內沒有被請求,則緩存管理將會自動將其 在內存中刪除,不管該文件是否過期。該參數默認值為 10 分鐘(10m)。注 意,非活動內容有別于過期內容。 Nginx 不會自動刪除由緩存控制頭部指定的 過期內容(本例中 Cache-Control:max-age=120)。過期內容只有在 inactive 158靜態(tài)文件服務 指定時間內沒有被訪問的情況下才會被刪除。如果過期內容被訪問了,那么 Nginx 就會將其從原服務器上刷新,并更新對應的inactive計時器。 6. Nginx 最初會將注定寫入緩存的文件先放入一個臨時存儲區(qū)域, use_temp_path=off命令指示 Nginx 將在緩存這些文件時將它們寫入同一個目 錄下。我們強烈建議你將參數設置為off來避免在文件系統中不必要的數據拷 貝。use_temp_path在 Nginx 1.7版本和 Nginx Plus R6中有所介紹。 最終,proxy_cache 命令啟動緩存那些URL與location部分匹配的內容(本例中, 為 / )。你同樣可以將proxy_cache命令添加到server部分,這將會將緩存應用到 所有的那些location中未指定自己的proxy_cache命令的服務中。
到此這篇關于nginx 配置靜態(tài)緩存及靜態(tài)緩存文件沒有生成的問題及解決方案的文章就介紹到這了,更多相關nginx 配置靜態(tài)緩存內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
nginx中的正則表達式及l(fā)ocation和rewrite總結
rewrite功能就是,使用nginx提供的全局變量或自己設置的變量,結合正則表達式和標記位實現URL重寫以及重定向,這篇文章主要介紹了nginx中的正則表達式及l(fā)ocation和rewrite總結,需要的朋友可以參考下2023-12-12
Nginx中的root&alias文件路徑及索引目錄配置詳解
這篇文章主要介紹了Nginx中的root&alias文件路徑及索引目錄配置,順帶講解了root和alias命令的用法,需要的朋友可以參考下2016-01-01
Nginx的偽靜態(tài)配置中使用rewrite來實現自動補全的實例
這篇文章主要介紹了Nginx的偽靜態(tài)配置中使用rewrite來實現自動補全的實例,文中對rewrite的相關參數和正則表達使用也做了介紹,需要的朋友可以參考下2015-12-12

