Using proxy_cache_background_update
jeanpaul
nginx-forum at forum.nginx.org
Sun Feb 26 18:08:02 UTC 2017
Hi Maxim,
I stripped down my configuration and removed 'unneeded' parts to reproduce.
I'm able to reproduce it with the following settings:
location / {
# Added to mitigate the issue. Removed for testing
#rewrite ^/index.html$ / break;
proxy_pass http://backends;
proxy_next_upstream error timeout invalid_header;
proxy_buffering on;
proxy_connect_timeout 1;
proxy_read_timeout 30;
proxy_cache_background_update on;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache STATIC;
proxy_cache_use_stale error timeout invalid_header updating http_500
http_502 http_503 http_504;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding "";
set $no_cache "";
proxy_ignore_headers Cache-Control Expires Vary;
# Removing the if construction and leaving the "expires" in place
solves the issue!
if ($no_cache = "") {
expires 1s;
}
proxy_cache_valid 200 3s;
}
To test the call I used curl and wget:
curl --verbose --header "host: www.example.com" -o /dev/null
http://1.2.3.4/
wget --header "host: www.example.com" --output-document=/dev/null
http://1.2.3.4/
The Apache logs show:
example.com 1.2.3.4 127.0.0.1 - - [26/Feb/2017:18:49:17 +0100] "GET
/index.html HTTP/1.1" 404 43193 "-" "curl/7.26.0"
example.com 1.2.3.4 127.0.0.1 - - [26/Feb/2017:18:53:22 +0100] "GET
/index.html HTTP/1.1" 404 43194 "-" "Wget/1.13.4 (linux-gnu)"
I captured traffic using tcpdump and Wireshark shows the following:
Original request with curl
GET / HTTP/1.1
User-Agent: curl/7.26.0
Accept: */*
host: www.example.com
Resulting request from Nginx:
GET /index.html HTTP/1.1
Host: www.example.com
X-Real-IP: 1.2.3.4
X-Forwarded-For: 1.2.3.4
User-Agent: curl/7.26.0
Accept: */*
HTTP/1.1 404 Not Found
Date: Sun, 26 Feb 2017 18:04:24 GMT
Server: Apache
Thanks in advance,
JP
Posted at Nginx Forum: https://forum.nginx.org/read.php?2,272622,272629#msg-272629
More information about the nginx
mailing list