天天看點

Nginx 反向代理可以緩存 HTTP POST 請求頁面嗎?

本文節選自《netkiller web 手劄》 作者:netkiller 網站:http://www.netkiller.cn

答案是可以! 

因為nginx 使用 url 作為緩存的key ( nginx 将url位址 md5後作為緩存的 key ),是以預設情況下 nginx 隻能處理 http get 緩存。

對于 http post 請求,送出資料放在http head 頭部送出到伺服器的, 送出前後url始終不變,nginx 無法區分相同網址兩次請求的内容有變化。

但是我們可以自定義 緩存 key 例如: "$request_uri|$request_body" 我們将請求位址加上post内容作為緩存的key,這樣nginx 便可以區分每次送出後的頁面變化。

$request_body 用于緩存的例子:

将 post 資料記錄到日志中

注意:使用者登入通常使用post方式,是以記錄post資料到日志會帶來安全問題,例如使用者密碼洩露。

we accept paypal through:

https://www.paypal.me/netkiller

wechat (微信) / alipay (支付寶) 打賞:

http://www.netkiller.cn/home/donations.html