Nginx Cache Purge Module install
1- Öncelikle yukarıdaki dökümana göre nginx servisini kuruyoruz.
2- Ardından ngx_cache_purge modülünü kurmalıyız. Nginx’i indirdiğimiz dizine geçip, aşağıdaki komutu çalıştırıyoruz.
./configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_image_filter_module=dynamic --modules-path=/etc/nginx/modules --with-http_v2_module --with-stream=dynamic --with-http_addition_module --with-http_mp4_module --add-dynamic-module=/home/onur/headers-more-nginx-module --add-module=/home/onur/ngx_security_headers --add-module=/home/onur/nginx-rtmp-module --add-dynamic-module=/home/onur/ngx_cache_purge
Modülün kurulumunu tamamlamak için aşağıdaki komutu çalıştırıyoruz.
make && make install
Nginx dizini altında “modules” dizini içerisine, ilgili modülümüzün yüklendiğini teyit etmeliyiz.

3- Ardından nginx.conf dosyamızı düzenliyoruz.
worker_processes 1;
# Modules
load_module /etc/nginx/modules/ngx_http_headers_more_filter_module.so;
load_module /etc/nginx/modules/ngx_stream_module.so;
load_module /etc/nginx/modules/ngx_http_cache_purge_module.so;
events {
worker_connections 1024;
}
http {
proxy_cache_path /tmp/cache levels=1:2 keys_zone=tmpcache:10m;
include mime.types;
default_type application/octet-stream;
#security_headers on;
#server_tokens off;
more_set_headers 'Server: Onur';
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://10.90.0.138:9115;
proxy_cache tmpcache;
proxy_cache_key $uri$is_args$args;
proxy_cache_valid 200 1d;
add_header X-Proxy-Cache $upstream_cache_status;
}
location ~ /purge(/.*) {
proxy_cache_purge tmpcache $1$is_args$args;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
proxy_cache_key $uri$is_args$args;
$uri
: Bu, gelen isteğin tam URI'sini temsil eder. URI, isteğin hedef aldığı kaynak veya dosyanın yolunu içerir. Örneğin,/sayfa
veya/dosya.html
gibi.$is_args
: Bu, URL'de var olan parametrelerin (?foo=bar
) olup olmadığını kontrol eder. Eğer parametreler varsa?
karakterini içerir, yoksa boş bir değere sahip olur.$args
: Bu, URL'deki tüm parametreleri temsil eder. Parametreler,?
karakterinden sonra gelen anahtar-değer çiftleridir. Örneğin,?foo=bar&baz=qux
gibi.
Bu argümanlar, proxy_cache_key
direktifinde cache anahtarını belirlemek için kullanılır. Cache anahtarı, cache'in belirli bir içeriği depolaması için kullanılan bir tanımlayıcıdır. $uri$is_args$args
ifadesi, URL'nin tamamını ve varsa parametrelerini birleştirerek cache anahtarını oluşturur.
Örneğin, /sayfa?foo=bar
URL'si için $uri$is_args$args
ifadesi sayfa?foo=bar
değerini oluşturacaktır. Bu, cache'in sayfa?foo=bar
URL'sine göre içeriği saklamasını sağlar.
proxy_cache_purge tmpcache $1$is_args$args;
$1
: Bu,location
bloğunda tanımlanan bir düzenli ifade (regex) kullanılarak yakalanan değeri temsil eder. Örneğin,location ~ /purge(/.*)
bloğunda/purge
ile başlayan bir URL'ye yapılan istekteki yakalanan değeri temsil eder. Örneğin,/purge/example
URL'si için$1
değeriexample
olacaktır.$is_args
: Bu, URL'de parametrelerin (?foo=bar
) olup olmadığını kontrol eder. Eğer URL parametreleri varsa,?
karakterini içerir; aksi takdirde boş bir değere sahiptir.$args
: Bu, URL'deki tüm parametreleri temsil eder. Parametreler,?
karakterinden sonra gelen anahtar-değer çiftleridir. Örneğin,?foo=bar&baz=qux
gibi.
Bu argümanlar, proxy_cache_purge
direktifinde kullanılır ve belirli bir URL'yi cache'ten temizlemek için kullanılır. $1$is_args$args
ifadesi, yakalanan değeri (örneğin, /purge
bloğunda yakalanan URL parçasını), varsa URL parametrelerini ve tüm parametreleri birleştirerek cache temizleme işlemini gerçekleştirir.
Örneğin, /purge/example?foo=bar
URL'si için $1$is_args$args
ifadesi example?foo=bar
değerini oluşturacaktır. Bu, tmpcache
adındaki cache bölgesindeki example?foo=bar
URL'sini temizlemek için kullanılır.
Ardından testlerimize geçebiliriz;
