Я пытаюсь найти связь между оператором перезаписи в блоке местоположения nginx и оператором установки переменной внутри блока местоположения. Почему я спрашиваю из-за различного поведения в следующих 2 случаях
что не работает - получение http 500, так как URL не установлен - когда установлен после оператора перезаписи*
location ~ ^/offer/ {
log_by_lua_file lua/datadog/api_latency.lua;
proxy_pass $url;
proxy_read_timeout 60;
rewrite ^((?U).*)(/?)$ $1 break;
set $location_name offer;
set $url https://example.com;
}
Что работает — если установлено перед оператором перезаписи
location ~ ^/offer/ {
log_by_lua_file lua/datadog/api_latency.lua;
proxy_pass $url;
proxy_read_timeout 60;
set $url https://example.com;
rewrite ^((?U).*)(/?)$ $1 break;
set $location_name offer;
}
В журналах отладки nginx я вижу, что заданная переменная выполняется в рабочем случае, но не в нерабочем. Я искал в документации nginx, есть ли какая-либо связь - лучшее, что я могу получить, это то, что оба они выполняются на этапе перезаписи, но никакой другой информации о причине такого поведения.
Любая идея, почему это происходит?