Apache-2.2

支持 POST 的 HTTP 記憶體伺服器

  • April 13, 2012

我正在託管一個 REST 服務,該服務正在發送適當的記憶體控制標頭。我使用 Varnish 作為我的網路伺服器前面的記憶體伺服器。但是,varnish 的一個限制是它不支持記憶體 HTTP POST 和 HTTP PUT。是否有任何備用記憶體伺服器能夠記憶體這些請求?

我知道記憶體 POST 有點棘手,因為您不能像 GET 一樣僅基於 url 作為鍵進行記憶體;它需要實際檢查請求正文。在multipart/form-data請求的情況下,可能應該對要記憶體的請求正文的大小進行限制(以便不會記憶體大文件上傳等)。儘管如此,我真的希望能夠記憶體簡短的 HTTP POST,或者至少是application/x-www-form-urlencoded那些。

記憶體的主要思想是在不詢問後端系統的情況下為相同的請求提供相同的響應。POST 請求的問題在於,您必須檢查主體以確定兩個請求何時相同。最好的解決方案是從 POST 更改為 GET。

如果這不適用,您可以嘗試使用以下設置的Nginx 代理模組(請參閱所需的主體大小限制):

location @apache_backend {
   ...
   proxy_cache_methods   POST;
   proxy_cache_key       "$uri|$request_body";
   client_max_body_size  1k;
}

引用自:https://serverfault.com/questions/378956