Hello! On Fri, Nov 09, 2018 at 08:00:59AM +0000, Thomas Peterson wrote:
> Thanks for your response, I didn't consider using a configuration > variable. However upon investigating my patch in greater detail, I have > noticed a difference in behaviour. Consider the following configuration: > > proxy_cache_key $scheme$proxy_host$request_uri; > set $var_cache_key $scheme$proxy_host$request_uri; > > add_header Proxy-Cache-Key $proxy_cache_key; > add_header Var-Cache-Key $var_cache_key; > > I am expecting both of these headers to contain the same value - however > in running this in the nginx test harness does not show this, it shows > the $proxy_host value being empty when interpolated into $var_cache_key. > Attached is the test which should fail against my patch. > > I'd appreciate it if you could tell me where I am going wrong. The problem is that the $proxy_host variable is only available when proxy starts working. Before this, it is empty, and hence "set", which is executed during rewrite phase, will use an empty value. Sorry for the broken example. If you want to use the $proxy_host variable, the solution would be to use map instead (http://nginx.org/r/map). That is, something like this: map $scheme $cache_key { default $scheme$proxy_host$request_uri; } proxy_cache_key $cache_key; add_header X-Cache-Key $cache_key; The map is evaluated (and cached) once proxy_cache_key is resolved, so there will be no problem like the one with set. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-devel mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-devel
