Hi, Vadim We assume that your test has been passed whether applying Maxim's patch or not the conventional one. (my verification may be inadequate...)
: server { : listen 127.0.0.1:8080; : location / { : proxy_pass http://127.0.0.2:8080; : proxy_cache cache_zone; : } : } : server { : listen 127.0.0.2:8080; When I changed the upstream server port to another one(e.g 8081), The conventional Nginx had failed on the `/fail` case and Maxim's patched ones had come to pass. We consider that this seems to be the right direction. And I prefer to add the cache status headers instead of using your cache file counter. The config phase: : server { : listen 127.0.0.1:8080; : location / { : proxy_pass http://127.0.0.2:8081; : proxy_cache cache_zone; : add_header X-Cache-Status \$upstream_cache_status; : } : } : server { : listen 127.0.0.2:8081; : location /success { : add_header Cache-Control "max-age=3600"; : add_header Expires "Tue, 15 Nov 1994 12:45:26 GMT"; : return 200 "Hello world!"; : } : location /fail { : add_header Expires "Tue, 15 Nov 1994 12:45:26 GMT"; : add_header Cache-Control "max-age=3600"; : return 200 "Hello world!"; : } On the test phase: : $r = http_get('/success'); : like($r, qr/Cache-Control/, 'cache-control-first-cache-control-is-present'); : like($r, qr/Expires/, 'cache-control-first-expires-is-present'); : $r = http_get('/success'); : like($r, qr/X-Cache-Status: HIT/, 'cache-status-is-hit'); : : $r = http_get('/fail'); : like($r, qr/Cache-Control/, 'expires-first-cache-control-is-present'); : like($r, qr/Expires/, 'expires-first-expires-is-present'); : $r = http_get('/fail'); : like($r, qr/X-Cache-Status: HIT/, 'cache-status-is-hit'); Thanks a lot, Yugo Horie 2022年4月20日(水) 7:22 Vadim Fedorenko via nginx-devel <nginx-devel@nginx.org>: > > # HG changeset patch > # User Vadim Fedorenko <vadim.fedore...@cdnnow.ru> > # Date 1649976970 -10800 > # Fri Apr 15 01:56:10 2022 +0300 > # Node ID 3d5684530a8ef228cd7f20ff3e51f9ea5e77f2ec > # Parent 0c50a00e67334659d58d3cf7cb81fcf5872a8285 > Tests: added Expires and Cache-Control headers test > > diff -r 0c50a00e6733 -r 3d5684530a8e proxy_cache_expires_cache_control.t > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/proxy_cache_expires_cache_control.t Fri Apr 15 01:56:10 2022 +0300 > @@ -0,0 +1,99 @@ > +#!/usr/bin/perl > + > +# (C) Georgii Dzebisashvili > +# (C) Vadim Fedorenko > + > +# Tests for cache management regarding > https://trac.nginx.org/nginx/ticket/964 > + > +############################################################################### > + > +use warnings; > +use strict; > + > +use Test::More; > + > +BEGIN { use FindBin; chdir($FindBin::Bin); } > + > +use lib 'lib'; > +use Test::Nginx; > + > +use File::Find; > + > +############################################################################### > + > +select STDERR; $| = 1; > +select STDOUT; $| = 1; > + > +my $scriptDir = $FindBin::Bin; > +my $cacheDir = $scriptDir."/testcache"; > +my $tempDir = $scriptDir."/testtemp"; > + > +my $t = Test::Nginx->new()->plan(8)->write_file_expand('nginx.conf', > <<"EOF"); > + > +daemon off; > +events { > + worker_connections 64; > +} > +http { > + access_log off; > + proxy_cache_path $cacheDir levels=2 keys_zone=cache_zone:1m inactive=24h > max_size=10m; > + proxy_temp_path $tempDir; > + server { > + listen 127.0.0.1:8080; > + location / { > + proxy_pass http://127.0.0.2:8080; > + proxy_cache cache_zone; > + } > + } > + server { > + listen 127.0.0.2:8080; > + location /success { > + add_header Cache-Control "max-age=3600"; > + add_header Expires "Tue, 15 Nov 1994 12:45:26 GMT"; > + return 200 "Hello world!"; > + } > + location /fail { > + add_header Expires "Tue, 15 Nov 1994 12:45:26 GMT"; > + add_header Cache-Control "max-age=3600"; > + return 200 "Hello world!"; > + } > + location /store_xaccelexpire { > + add_header Expires "Tue, 15 Nov 1994 12:45:26 GMT"; > + add_header Cache-Control "no-cache"; > + add_header X-Accel-Expires "60"; > + return 200 "Hello world!"; > + } > + } > +} > + > + > +EOF > + > +$t->run(); > + > +############################################################################### > + > +my $counter = 0; > + > +sub fileMatchCallback { > + -f && $counter++; # Only count files > +} > + > +my $r; > + > +$r = http_get('/success'); > +like($r, qr/Cache-Control/, 'cache-control-first-cache-control-is-present'); > +like($r, qr/Expires/, 'cache-control-first-expires-is-present'); > + > +$r = http_get('/fail'); > +like($r, qr/Cache-Control/, 'expires-first-cache-control-is-present'); > +like($r, qr/Expires/, 'expires-first-expires-is-present'); > + > +$r = http_get('/store_xaccelexpire'); > +like($r, qr/Cache-Control/, 'cache-control-with-xaccel-is-present'); > +like($r, qr/Expires/, 'expires-with-xaccel-is-present'); > +unlike($r, qr/X-Accel-Expires/, 'xaccel-is-not-present'); > + > +find(\&fileMatchCallback, $cacheDir); > + > +is($counter, 3, 'overall number of cached requests'); > _______________________________________________ > nginx-devel mailing list -- nginx-devel@nginx.org > To unsubscribe send an email to nginx-devel-le...@nginx.org _______________________________________________ nginx-devel mailing list -- nginx-devel@nginx.org To unsubscribe send an email to nginx-devel-le...@nginx.org