目錄
一、代理
1、定義
處於通信鏈路的中間位置,轉發上下游的請求和響應,具有雙重身份。
2、相關字段
1)Via
通用字段,請求、響應頭都可以出現
每當報文經過一個代理節點,代理服務器就會把自身的信息(主機名或域名)加載到字段末尾。
示例:
Via: proxy1,proxy2
表示報文在通信鏈路傳輸經過了proxy1,proxy2兩個代理
2)X-Forwarded-For
每當經過一個節點,就將請求方的IP地址追加到後面。(注意與Via的區別)
所以,字段的最左邊的IP地址就是客戶端的地址。
3)X-Real-IP
只記錄客戶端IP地址,沒有中間的代理信息。
3、簡述代理協議
示例:
PROXY TCP4 1.1.1.1 2.2.2.2 5555 80 \r\n
協議名 TCP版本 請求方IP 應答方IP 請求方端口號 應答方端口號
作用:
能在不改動原始報文的情況下傳遞客戶端的真實IP。
二、緩存代理
1、相關字段
1)源服務器的緩存控制
在Cache-control(上篇博文有總結)的基礎上,新增了一些屬性。
1.private 和 public 屬性 :區分了客戶端上的緩存和代理上的緩存
private:只能在客戶端保存,不能再代理上與人共享。
public:緩存完全開放。
2.proxy-revalidate:要求代理緩存過期後必須驗證,但是向代理服務器驗證即可。
注意:區分must-revalidate -> 必須回源服務器驗證。
3.S-maxage: 在代理上能存放多久。
注意:客戶端仍然使用"max-age".
4.no-transform:代理專用。
不允許代理對花奴才能數據進行處理。
注意:源服務器設置完Cache-Control後必須加上"Last-Modified" 或 "ETag" 字段。
2)客戶端的緩存控制
在Cache-control(上篇博文有總結)的基礎上,新增了一些屬性。
1.max-stale:可接受代理已過期的緩存,但不能過期太久,超過x秒就不要。
2.min-fresh:要求緩存必須有效,而且必須在x秒之後還有效。
示例:
max-age=5,max-stale=2
表示過期2秒內仍然有效。
max-age=10,min-fresh=1
若此時已過5秒,則5+1 < 10,該緩存仍然有效。
3.Only-If-Cached:只接受代理緩存的數據,不接受源服務器的響應。
3)其他字段
Purge : 緩存清理
可以自定義 PURGE的請求方法,刪除緩存數據。
參考資料:
1.《HTTP權威指南》
2.極客時間-《透視HTTP協議》專欄-羅劍鋒