Puncte:0

getting 412 precondition failed with ngx_cache_purge when trying to purge cache

drapel lu

I am new to this and just started using nginx for my pet projects. now i would like to install and use ngx_cache_purge module from https://github.com/nginx-modules/ngx_cache_purge, since it has some cool integrations with wordpress.

here is the docker image i came up with:

FROM nginx:1.18.0

RUN apt update && apt install -y --no-install-recommends  --no-install-suggests \
            wget gcc make zlib1g-dev libpcre3-dev

RUN mkdir -p /home/nginx && cd /home/nginx && \
    wget -qO - https://nginx.org/download/nginx-1.18.0.tar.gz | tar zxfv - && \
    wget -qO - https://github.com/nginx-modules/ngx_cache_purge/archive/refs/tags/2.5.1.tar.gz | tar zxfv -

RUN cd /home/nginx/nginx-1.18.0 && \
    ./configure --add-dynamic-module=../ngx_cache_purge-2.5.1 --with-compat && \
    make modules && \
    cp objs/ngx_http_cache_purge_module.so /usr/lib/nginx/modules/ 

here is a sample nginx config:

load_module modules/ngx_http_cache_purge_module.so;

http {
    gzip off;
    gzip_vary off;
    gzip_proxied off;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 use_temp_path=off keys_zone=proxycache:256m
    inactive=30d
    max_size=4g;

    proxy_cache_purge PURGE from 127.0.0.1;

    server {
        listen *:8008;
        location ~* /purgea(/.*) {
            add_header X-url-match $scheme${request_method}my_proxy_server$1$args always;
            proxy_cache_purge proxycache $scheme${request_method}my_proxy_server$1$args;
            cache_purge_response_type json;
        }
    }
}

here is confirmation that cache file exists:

root@a65be2e6f69c:/# grep -R -a -E "^KEY:" /var/cache/nginx/proxy_cache/ | grep "jquery.min.js?ver=3.6.0"
/var/cache/nginx/proxy_cache/b/3c/e0ec9b13973d56a5780010cadccc73cb:KEY: httpGETmy_proxy_server/wp-includes/js/jquery/jquery.min.js?ver=3.6.0
root@a65be2e6f69c:/# 

here is the request i am making to purge the cache for that uri:

root@a65be2e6f69c:/# curl -v localhost:8008/purgea/wp-includes/js/jquery/jquery.min.js?ver=3.6.0
> GET /purgea/wp-includes/js/jquery/jquery.min.js?ver=3.6.0 HTTP/1.1
> Host: localhost:8008
> User-Agent: curl/7.64.0
> Accept: */*
> 
< HTTP/1.1 412 Precondition Failed
< Server: nginx
< Date: Fri, 13 May 2022 01:04:17 GMT
< Content-Type: text/html; charset=UTF-8
< Content-Length: 166
< Connection: keep-alive
< X-url-match: httpGETmy_proxy_server/wp-includes/js/jquery/jquery.min.jsver=3.6.0
< 
<html>
<head><title>412 Precondition Failed</title></head>
<body>
<center><h1>412 Precondition Failed</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host localhost left intact
root@a65be2e6f69c:/#

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.