【发布时间】:2017-04-09 20:35:02
【问题描述】:
我正在实现 nginx 作为 Django 项目的反向代理。我现在正在尝试在下面实现 nginx 的缓存配置:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:5m max_size=1g inactive=60m;
proxy_temp_path /var/cache/nginx/tmp;
server {
...
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
# cache
proxy_cache my_cache;
proxy_cache_min_uses 1;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_cache_lock on;
proxy_hide_header "Set-Cookie";
add_header X-Proxy-Cache $upstream_cache_status;
}
}
一切都很好,但是我希望它使经过身份验证的用户能够绕过缓存,否则当他们更新站点内容时,他们将看不到更改,只会看到缓存的内容,直到它过期。
解决这个问题的最佳方法是什么?
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
缓存动态内容几乎总是一个坏主意
-
该站点不是非常动态的,只是在管理员中进行更新时,进行修改的用户将无法查看更新,直到缓存过期(或者如果他们在 url 栏中输入 nocache)。
-
您每天获得多少页面浏览量