Proxy

如何將 Nginx 設置為記憶體反向代理?

  • February 28, 2019

我最近聽說 Nginx 在其反向代理功能中添加了記憶體。我環顧四周,但找不到太多關於它的資訊。

我想將 Nginx 設置為 Apache/Django 前面的記憶體反向代理:讓 Nginx 代理請求一些(但不是全部)動態頁面到 Apache,然後記憶體生成的頁面並從記憶體中為這些頁面提供後續請求。

理想情況下,我想以兩種方式使記憶體無效:

  1. 設置記憶體項的到期日期
  2. 顯式地使記憶體項無效。例如,如果我的 Django 後端更新了某些數據,我想告訴 Nginx 使受影響頁面的記憶體無效

是否可以設置 Nginx 來做到這一點?如何?

我不認為有一種方法可以顯式地使記憶體項無效,但這裡有一個如何做其餘部分的範例。**更新:**正如 Piotr 在另一個答案中提到的,您可以使用一個記憶體清除模組。您還可以使用 nginx 的 proxy_cache_bypass 強制刷新記憶體項目 - 有關更多資訊,請參閱Cherian 的答案

在此配置中,未記憶體的項目將從 example.net 檢索並儲存。記憶體的版本將提供給未來的客戶端,直到它們不再有效(60 分鐘)。

您的 Cache-Control 和 Expires HTTP 標頭將得到尊重,因此,如果您想明確設置到期日期,您可以通過在您要代理的任何內容中設置正確的標頭來做到這一點。

您可以調整很多參數 - 請參閱 nginx 代理模組文件以獲取有關所有這些的更多資訊,包括有關不同設置/參數含義的詳細資訊:http: //nginx.org/r/proxy_cache_path

http {
 proxy_cache_path  /var/www/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
 proxy_temp_path /var/www/cache/tmp; 


 server {
   location / {
     proxy_pass http://example.net;
     proxy_cache my-cache;
     proxy_cache_valid  200 302  60m;
     proxy_cache_valid  404      1m;
   }
 }
}

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