[PATCH] Proxy: Adding proxy_cache_key emedded variable

Thomas Peterson hidinginthebbc at gmail.com
Wed Nov 14 10:04:51 UTC 2018


Thank you for the clarification.

If the map example you gave me should cover when upstream modules are 
being used, I don't think my patch will be required anymore.

Regards

On 13/11/2018 19:11, Maxim Dounin wrote:
> 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.
>


More information about the nginx-devel mailing list