Nginx Cache Purge Module install

Onur BOLATOĞLU
3 min readJun 23, 2023

--

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ğeri example 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;

--

--