Nginx 快取使用指南-簡單
## 重點部分
### http 模組增加
```text
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_temp_file_write_size 96k;
proxy_temp_path /tmp/temp_dir;
```
### 匹配規則模組增加
* 正則匹配,快取圖片/js型別檔案
```text
location ~ .*\.(gif|jpg|png|css|js)(.*) {
proxy_pass http://127.0.0.1:8780;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
rewrite ~/(.*)$ /$1 break;
expires 24h;
add_header zuiyu_say "hey! Guys! Give me one to see";
}
```
* 對url匹配
```text
location /api/loadFileStream {
proxy_pass http://127.0.0.1:8780;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_key $uri;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 24h;
add_header zuiyu_say "hey! Guys! Give me one to see";
}
```
到此,快取即配置完成,就可以測試 一下了
## 配置項解讀
### http 模組
* proxy_buffer_size 緩衝區大小
* proxy_buffers 每個連線設定緩衝區的數量為number,每塊緩衝區的大小為size
* proxy_busy_buffers_size 開啟緩衝響應 的功能以後,在沒有讀到全部響應的情況下,寫緩衝到達一定大小時,nginx一定會向客戶端傳送響應,直到緩衝小於此值
* proxy_cache_path 設定快取的路徑和其他引數。被快取的資料如果有inactive引數,當前引數是1天,指定的時間未被訪問,就會從快取中移除
* proxy_connect_timeout 伺服器連線超時時間
* proxy_read_timeout 連線成功後,等待後端伺服器響應時間
* proxy_send_timeout 後端伺服器資料回傳時間
* proxy_temp_file_write_size 設定nginx每次寫資料到臨時檔案的size大小限制
* proxy_temp_path 從後端伺服器接受的臨時檔案存放路徑
### 匹配規則模組
* proxy_pass nginx快取拿不到資源向該地址轉發請求,拿到獲取的資源並進行快取
* proxy_redirect 設定後端伺服器Location響應頭和Refresh響應頭的替換文字
* proxy_set_header 允許重新定義發往後端伺服器的請求頭
* proxy_cache 指定用於頁面快取的共享記憶體,對應http層設定keys_zone
* proxy_cache_key 快取的key 預設"$host$request_uri $cookie_user"; 可以使用下面nginx配置引數獲取指定引數hash一個自定義的key
* proxy_cache_valid 對不同響應的狀態碼設定不同的快取時間
* expires 快取時間
* add_header 對伺服器返回的響應頭內容新增自定義返回資料,格式為 add_header key value
## Nginx 配置獲取引數詳解
```text
nginx 各引數翻譯,作用
$arg_PARAMETER #這個變數包含GET請求中,如果有變數PARAMETER時的值。
$args #這個變數等於請求行中(GET請求)的引數,例如foo=123&bar=blahblah;
$binary_remote_addr #二進位制的客戶地址。
$body_bytes_sent #響應時送出的body位元組數數量。即使連線中斷,這個資料也是精確的。
$content_length #請求頭中的Content-length欄位。
$content_type #請求頭中的Content-Type欄位。
$cookie_COOKIE #cookie COOKIE變數的值
$document_root #當前請求在root指令中指定的值。
$document_uri #與$uri相同。
$host #請求主機頭欄位,否則為伺服器名稱。
$hostname #Set to the machine’s hostname as returned by gethostname
$http_HEADER
$is_args #如果有$args引數,這個變數等於”?”,否則等於”",空值。
$http_user_agent #客戶端agent資訊
$http_cookie #客戶端cookie資訊
$limit_rate #這個變數可以限制連線速率。
$query_string #與$args相同。
$request_body_file #客戶端請求主體資訊的臨時檔名。
$request_method #客戶端請求的動作,通常為GET或POST。
$remote_addr #客戶端的IP地址。
$remote_port #客戶端的埠。
$remote_user #已經經過Auth Basic Module驗證的使用者名稱。
$request_completion #如果請求結束,設定為OK. 當請求未結束或如果該請求不是請求鏈串的最後一個時,為空(Empty)。
$request_method #GET或POST
$request_filename #當前請求的檔案路徑,由root或alias指令與URI請求生成。
$request_uri #包含請求引數的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。不能修改。
$scheme #HTTP方法(如http,https)。
$server_protocol #請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
$server_addr #伺服器地址,在完成一次系統呼叫後可以確定這個值。
$server_name #伺服器名稱。
$server_port #請求到達伺服器的埠號。
$uri #不帶請求引數的當前URI,$uri不包含主機名,如”/foo/bar.html”。該值有可能和$request_uri 不一致。$request_uri是瀏覽器發過來的值。該值是rewrite後的值。例如做了internal redirects後。
```
參考連結 https://blog.csdn.net/z69183787/article/details/78033336
微信公眾號 醉魚Java 一起來學習交流
相關文章
- Nginx 代理快取Nginx快取
- LRU cache快取簡單實現快取
- Caffeine快取的簡單介紹快取
- 快取函式的簡單使用快取函式
- mysql查詢快取簡單使用MySql快取
- memcached快取知識簡單梳理快取
- Hazelcast簡單的分散式快取AST分散式快取
- nginx快取使用詳解,nginx快取使用及配置步驟Nginx快取
- Java記憶體快取-通過Map定製簡單快取Java記憶體快取
- 簡單的檔案快取函式快取函式
- Nginx快取設定教程Nginx快取
- nginx反向代理快取教程。Nginx快取
- Nginx瀏覽器快取Nginx瀏覽器快取
- nginx快取與優化Nginx快取優化
- Spring Boot:簡單使用EhCache快取框架Spring Boot快取框架
- 超簡單獲取快應用摘要值
- Android 的二級快取如斯簡單Android快取
- hibernate一二級快取簡單介紹快取
- 快取、快取演算法和快取框架簡介快取演算法框架
- 簡述快取快取
- Nginx快取原理及機制Nginx快取
- 深入Nginx + PHP 快取詳解NginxPHP快取
- Nginx快取伺服器配置Nginx快取伺服器
- Nginx配置瀏覽器快取Nginx瀏覽器快取
- nginx靜態檔案快取Nginx快取
- nginx快取優先順序Nginx快取
- Nginx 的五種快取方法Nginx快取
- 分散式快取 - 快取簡介,常用快取演算法分散式快取演算法
- Golang專案簡單初始化快取池Golang快取
- 真的只是簡單瞭解下瀏覽器快取瀏覽器快取
- 簡單一條命令即可快速清理DNS快取DNS快取
- 如何最簡單的實現分散式快取分散式快取
- Nginx簡單操作Nginx
- Flask-SocketIO 簡單使用指南Flask
- 009.Nginx快取及配置Nginx快取
- nginx 只快取靜態檔案Nginx快取
- 更好用 更簡單的Java快取框架 jscacheJava快取框架JS
- Spring Boot 中使用Caffeine快取的簡單例子Spring Boot快取單例