Re: "proxy_cache_valid 400" -- возможно ли?

Sergey Kandaurov pluknet на nginx.com
Чт Окт 8 10:21:36 UTC 2015


On Oct 8, 2015, at 12:09 PM, Juriy Strashnov <juriy.foboss на gmail.com> wrote:
> Коллеги, всем привет!
> 
> Возникла нужда кратковременно кешировать ответы backend'a. Проблема в том, что надо не только код 200, но и 400. 
> 
> Попробовал так (в лоб):
> 
> proxy_cache_path /var/cache/nginx/apicache levels=1:2 keys_zone=apicache:10m;
> 
> location /api {
>         <...>
> 
>         proxy_cache apicache;
>         proxy_cache_use_stale error timeout updating;
>         proxy_cache_lock on;
>         proxy_cache_valid any 30s;
>         proxy_cache_valid 400 30s;
>         proxy_cache_methods POST;
>         proxy_cache_key "$request_uri|$request_body";
> 
>         proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
> 
>         add_header X-Cached $upstream_cache_status;
> }
> 
> Не помогло! Если на код 200 в ответе появляется заголовок:
> 
> HTTP/1.1 200 OK
> Server: nginx
> Date: Thu, 08 Oct 2015 08:54:38 GMT
> Content-Length: 0
> Connection: keep-alive
> X-Cached: HIT
> 
> то на 400 его уже нет:

Используйте параметр always, подробности тут:
http://nginx.org/r/add_header/ru

См. также debug log на предмет сообщений “file cache send”.

-- 
Sergey Kandaurov



Подробная информация о списке рассылки nginx-ru