Soru tek nginx önbellek dosyası nasıl silinir?


http://example.com/ boş sayfasına eriştiğinde ancak http://example.com/index.php ile iyi çalışıyorsa http://example.com/ için nginx önbellek dosyasını nasıl silmem gerekiyor? İşte benim nginx önbelleğim conf.

    fastcgi_cache_path  /backup/cache levels=1:2 keys_zone=my-cache:1000m inactive=1000m;
    fastcgi_temp_path /backup/cache/tmp 1 2;
    fastcgi_cache_key "$scheme://$host$request_uri";

/ Backup / cache klasöründe önbellek dosya adı nasıl alınır?


4
2018-03-29 00:19


Menşei




Cevaplar:


bir yöntem, örneğin, ancak oldukça esnek bir çok yönlü

bu satırı nginx.conf dosyasına ekle ...

proxy_cache_bypass $http_x_update;

... ve "sihirli" başlıklı basit http isteği ile önbellekteki uri'yi her zaman güncelleyebilirsiniz. Örneğin

curl -s -o /dev/null  -H "X-Update: 1" mydomain.com

veya

curl -s -o /dev/null  -H "X-Update: 1" mydomain.com/some/long/url/

Paranoya'nın güvenliği ve memnuniyeti için: D, başlık adını herhangi bir blablabla olarak değiştirebilirsiniz, örneğin

proxy_cache_bypass $http_x_gangnamstyle;
#proxy_cache_bypass $http_x_mycatsnickname;
#proxy_cache_bypass $http_x_b2ca678b4c936f905fb82f2733f5297f;

ve

curl -s -o /dev/null  -H "X-GangnamStyle: 1" mydomain.com
curl -s -o /dev/null  -H "X-mycatsnickname: 1" mydomain.com
curl -s -o /dev/null  -H "X-b2ca678b4c936f905fb82f2733f5297f: 1" mydomain.com

8
2018-03-29 06:12



Proxy kullanmıyorum çünkü fastcgi_cache_bypass $ http_X_Update; ve sonra curl -s -o / dev / null -H "X-Güncelleme: 1" mydomain.com ama hala çalışmıyor - imastar
Harika çalışıyor, teşekkürler! - Koen.
fastcgi için @imastar gerekir fastcgi_cache_bypass $cookie_x_update direktif. cevabım biraz çok geç :) ama başkasına yararlı olabilir - cadmi
Bu hiçbir şeyi silmez, sadece önbelleği atlamanıza yardımcı olur. Kullanıcılarınız önbelleğe alınmış sürümü görmeye devam ederdi. Ayrıca, bu curl komutu zaten "sessiz" bayrağa sahip. Neden çıkışı "/ dev / null" olarak kaydetmeye çalışıyorsunuz? bu hiç mantıklı değil. - xecute


Bu satırdaki konfigürasyonunda bir yerde olmalıydın.

fastcgi_cache_key *key*;

İlgili URL için oradan anahtarı bulmanız ve ardından bu anahtar dizesi için md5 değerini hesaplamanız gerekir.

Şimdi md5 değerinin xm ***** p3w'ye geldiğini varsayalım. Yani, URL için önbellek dosyanız / backup / cache / w / p3 / xm ***** p3w. Şimdi nasıl istersen onu sil.

Nginx ile nginx_cache_purge modülüne sahipseniz, diğer otomatik yol

fastcgi_cache_purge CACHEREGION $cache_key;

Burada, CACHEREGION tarafından tanımlanan önbellek bölgesidir fastcgi_cache_path yönerge ve $ cache_key değeri fastcgi_cache_key direktif.

Not: fastcgi_cache_purge yönerge konum bloğunda izin verilir.


2
2017-10-23 14:16





Bir diğer potansiyel çözüm, dosya sisteminizdeki gerçek dosya (lar) ı arıyorsanız, önbellek dizinini grep'lemek ve dosyaları tek tek basmak olacaktır (varsayılanı kullandığınızı varsayarak). /var/cache/nginx dizin:

sudo grep -lr 'example.com/' /var/cache/nginx*

Bu, daha sonra incelemek ve / veya silmek için dosyaların listesini yazdırmalıdır:

/var/cache/nginx/0/74/c7de22912j735dc5d2206ffd37ba6740
/var/cache/nginx/d/15/9df468b0z77187f1fc020f9226ac515d
/var/cache/nginx/7/47/8sh3nlkjs8833f83383b67df9a2ca477

0
2017-10-26 00:29