Je veux configurer NGINX pour qu'il serve le contenu du cache à tout le monde sauf à une adresse IP.
Les deux objectifs que je souhaite atteindre sont les suivants :
- s'assurer qu'à partir de l'adresse IP spécifiée, je n'atteindrai jamais le cache mais que je recevrai le fichier réel sur le disque (donc si je supprime le fichier, il devrait immédiatement donner un message 404).
- pour toutes les autres IP : si un contenu qui n'est pas encore dans le cache est demandé, il est immédiatement chargé à partir du fichier et stocké dans le cache (ainsi, si je supprime le fichier, il devrait être servi pendant la durée du cache).
Voici ma configuration actuelle :
server {
listen 80;
listen 127.0.0.1:9999 default;
server_name storage.example.com;
charset utf-8;
autoindex off;
access_log "/var/log/nginx/storage.access.log";
udplog_tag "www.example.com/storage";
set_real_ip_from 127.0.0.0/8;
set_real_ip_from unix:;
real_ip_header X-Real-IP;
server_name_in_redirect off;
port_in_redirect off;
location /a/ {
alias "/storage/public/a/";
}
location /b/ {
alias "/storage/public/b/";
}
}
server {
listen 80;
server_name static.example.com;
charset utf-8;
autoindex off;
access_log "/var/log/nginx/static.access.log";
udplog_tag "www.example.com/static";
location / {
proxy_set_header Host "$host";
proxy_pass http://127.0.0.1:9999/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 15;
proxy_send_timeout 60;
proxy_read_timeout 60;
include proxy_cache;
proxy_redirect default;
}
}
Il s'agit du contenu du fichier proxy_cache inclus :
proxy_cache cache;
proxy_cache_key "$scheme://$host$uri";
proxy_cache_use_stale error;
proxy_next_upstream off;
proxy_cache_min_uses 1;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 30m;
proxy_buffers 128 4k;
J'aimerais faire quelque chose de similaire :
if ( $remote_addr != "ip to exclude" )
{ include proxy_cache; }
Malheureusement, cela ne fonctionne pas. Toute aide est grandement appréciée. Je vous remercie.