Welcome! Log In Create A New Profile

Advanced

Не работает map c переменными $status и $upstream_status

August 02, 2016 01:08PM
Доброго времени суток.
Возникла тут задачка кэшировать на nginx ТОЛЬКО 200-е ответы от апстрима, но при условии, что поддерживаются заголовки кэширования от бэкэнда. И тут упёрся в неразрешимую проблему - ни на одной версии nginx, начиная с 1.8.0 и кончая 1.10.1, на которую только что обновился не работает вот эта простейшая мапа:

map $upstream_status $do_cache {
200 "0";
default "no-cache";
}

Сам конфиг выглядит примерно так:

upstream test {
server 192.168.1.1;
}

proxy_cache_path /var/cache/nginx/test_cache levels=1:2 keys_zone=test_cache:2048m max_size=35000m inactive=3d;

server
{

listen 80;
server_name testapp;

proxy_cache test_cache;
proxy_cache_valid 200 3d;
proxy_cache_valid 301 5s;
proxy_cache_valid 302 1s;
proxy_cache_valid 500 1s;
proxy_cache_use_stale error timeout invalid_header updating;
#proxy_ignore_headers Expires Cache-Control Set-Cookie;
#proxy_hide_header Set-Cookie;
proxy_hide_header Pragma;
proxy_hide_header X-Powered-By;
proxy_hide_header X-AspNetMvc-Version;
proxy_headers_hash_max_size 2048;
proxy_headers_hash_bucket_size 1024;
proxy_http_version 1.1;

proxy_connect_timeout 10;
proxy_send_timeout 180;
proxy_read_timeout 60;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_cache_key "$host$request_uri$http_origin";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection "";

access_log /var/log/nginx/test.log cust;

location / {
proxy_cache_bypass $do_cache;
proxy_set_header Host testapp;
proxy_pass http://test;
}

}


Сделал вывод в кустомный лог переменной $do_cache - независимо от статуса, который приходит с апстрима, она всегда равна дефолту мапы...

10.2.14.219 - - [02/Aug/2016:12:45:52 -0400] "GET /WebForm1.aspx?code=200 HTTP/1.1" 200 594 "-" "no-cache"
10.2.14.219 - - [02/Aug/2016:12:45:52 -0400] "GET /WebForm1.aspx?code=200 HTTP/1.1" 200 585 "-" "no-cache"
10.2.14.219 - - [02/Aug/2016:12:45:52 -0400] "GET /WebForm1.aspx?code=200 HTTP/1.1" 200 591 "-" "no-cache"
10.2.14.219 - - [02/Aug/2016:12:45:56 -0400] "GET /WebForm1.aspx?code=500 HTTP/1.1" 500 674 "-" "no-cache"
10.2.14.219 - - [02/Aug/2016:12:45:58 -0400] "GET /WebForm1.aspx?code=500 HTTP/1.1" 500 674 "-" "no-cache"
10.2.14.219 - - [02/Aug/2016:12:45:58 -0400] "GET /WebForm1.aspx?code=500 HTTP/1.1" 500 674 "-" "no-cache"
Subject Author Posted

Не работает map c переменными $status и $upstream_status

YuriV August 02, 2016 01:08PM

Re: Не работает map c переменными $status и $upstream status

Pavel V. August 02, 2016 01:56PM

Re: Не работает map c переменными $status и $upstream status

YuriV August 03, 2016 07:29AM

Re: Не работает map c переменными $status и $upstream status

Pavel V. August 03, 2016 07:58AM

Re: Не работает map c переменными $status и $upstream status

YuriV August 03, 2016 12:00PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 93
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready