Nginx
FastCGI 記憶體總是一個 MISS
所以,我已經像這樣設置了 FastCGI 記憶體:
location ~ \.php(/.*)?$ { fastcgi_cache RWI; fastcgi_cache_valid 200 60m; set $nocache 0; if ($request_method = POST) { set $nocache 1; } if ($http_cookie ~ (rwi_userid*|rwi_password*)) { set $nocache 1; } if ($request_uri ~* "/(vb/admincp/)") { set $nocache 1; } fastcgi_no_cache $nocache; fastcgi_cache_bypass $nocache; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass "unix:/var/www/vhosts/system/{domain}/php-fpm.sock"; include /etc/nginx/fastcgi.conf; }
在
server{}
街區的頂部,我有:fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=RWI:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; add_header X-Cache $upstream_cache_status;
問題是我的 PHP 腳本(vBulletin)總是發送 Pragma & Cache-Control
private
。當上述規則不適用時,是否有任何方法可以忽略這些標頭並強制 FastCGI 使用記憶體?我有點迷失在這種記憶體的可能性中。
Nginx 在用作反向代理以遵守 HTTP 中間記憶體規範時會解釋一堆標頭。這意味著以下標頭(如果您的應用回復中存在)將按照說明更改記憶體行為:
- “X-Accel-Expires”標頭欄位設置響應的記憶體時間(以秒為單位)。零值禁用響應記憶體。如果該值以 @ 前綴開頭,則它設置自 Epoch 以來的絕對時間(以秒為單位),直到可以記憶體響應。
- 如果頭部不包含“X-Accel-Expires”欄位,可以在頭部欄位“Expires”或“Cache-Control”中設置記憶體參數。
- 如果標頭包含“Set-Cookie”欄位,則不會記憶體此類響應。
- 如果標頭包含具有特殊值“*”的“Vary”欄位,則不會記憶體此類響應(1.7.7)。如果標頭包含具有另一個值的“Vary”欄位,則將考慮相應的請求標頭欄位(1.7.7)記憶體此類響應。
fastcgi_ignore_headers
但是,如果您想關閉它,nginx 會附帶該指令。所以你要找的是:fastcgi_ignore_headers Cache-Control Pragma;
。