nginx快取動態頁面功能的設定

2021-08-27 22:11:35 字數 2159 閱讀 5054

網上查了一下相關資料,主要是在需要快取的路徑加proxy_cache,而後端動態頁面也需要做相應的處理,否則無法被nginx快取。(或者nginx配置處加上proxy_ignore_headers)

檢測到是**伺服器訪問的時候,給動態頁面加上和靜態頁面一致的頭部資訊,例如:

etag

:"1febdd4429cfcd1:0"

last

-modified

:fri,30

nov201218:

34:01gmt

讓**伺服器感覺不到是動態的內容。

這種方式最好快取的是沒有訪問許可權控制的動態頁面。

下面記錄幾篇文章:

1.

------------------------------------------分割線-----------------------------------

2.首先用的快取是proxy_cache.

在http段裡加入下列幾句:

[plain]view plain

copy

proxy_connect_timeout 5;  

proxy_read_timeout 60;  

proxy_send_timeout 5;  

proxy_buffer_size 16k;  

proxy_buffers 4 64k;  

proxy_busy_buffers_size 128k;  

proxy_temp_file_write_size 128k;  

proxy_temp_path /home/temp_dir;  

proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:50m inactive=20m max_size=30g;  

上面的各行的引數我再時不解釋,網上有很多。

接下來在要快取的service裡加入:

[plain]view plain

copy

location /gou/detail-id-116    

當然可以用正則快取更多的頁面如:~.*\.(php|jsp|cgi)?$

上面的我只解釋一下地方:

[plain]view plain

copy

proxy_ignore_headers  

這個表示不處理後端伺服器返回的指定響應頭,作用就是能夠快取動態頁面,比如.php的頁面,如果不加這一行就只能快取靜態的頁面內容了。

現在:nginx -s reload 後快取就有了,

接下來如何在需要的時候清理快取呢,

計算方法:

[plain]view plain

copy

proxy_cache_key  

值,如md5("www.***.com/gou/detail-id-116");

2) level=1:2就是把最後一位數9拿出來建乙個目錄,然後再把9前面的2位建乙個目錄,最後把剛才得到的這個快取檔案放到9/ad目錄中。

同樣的方法推理,如果level=1:1,那麼快取檔案的路徑就是/usr/local/nginx/cache/9/d/e0bd86606797639426a92306b1b98ad9

那麼我們就可以寫乙個指令碼來清理特定的快取了:

[plain]view plain

copy

#!/usr/bin/env php  

<?php   

$cache_dir = '/usr/local/nginx/cache/';  

$request_uri = $argv[1];  

$url_hash = md5($request_uri);  

$dir1 = substr($url_hash,-1,1) . '/';  

$dir2 = substr($url_hash,-3,2) . '/';  

$cached_file = $cache_dir . $dir1 . $dir2 . $url_hash;  

if (is_file($cached_file))  else   

} else   

nginx 頁面快取

proxy cache path 語法 proxy cache path path levels number keys zone zone name zone size inactive time max size size 預設值 none 使用字段 http 指令指定快取的路徑和一些其他引數,...

Nginx的內建快取功能

nginx的proxy模組 可以實現類似於squid的快取功能,http的快取與檔案系統或者塊裝置的快取還有所不同,檔案系統或者塊裝置的快取可以使用預取方法做優化,提前預取出將要被訪問的部分,但是http的快取卻無法預知檔案的訪問情形。可以在nginx裡面實現動態頁面的靜態化工作。使用者第一次訪問i...

nginx實現快取功能

nginx從0.7.48版本開始,支援了類似squid的快取功能。這個快取是把url及相關組合當作key,用md5編碼雜湊後儲存在硬碟上,所以它可以支援任意url鏈結,同時也支援404 301 302這樣的非200狀態碼。雖然目前官方的nginx web快取服務只能為指定url或狀態碼設定過期時間,...