Всем привет,
есть 2 location
location /download/premium/ {
limit_req zone=one burst=5;
limit_conn addr 8;
rewrite ^/download/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/(.*)$ /v1/AUTH_system/$2/$3/$7?temp_url_sig=$4&rate_limit=$5&temp_url_expires=$6&type=$1 break;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /download/free/ {
limit_req zone=one burst=5;
limit_conn addr 1;
rewrite ^/download/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/(.*)$ /v1/AUTH_system/$2/$3/$7?temp_url_sig=$4&rate_limit=$5&temp_url_expires=$6&type=$1 break;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
По сути они одинаковы, но отличаются только limit_conn
Я пробовал матчить URL, получать оттуда значение нужной переменной (она идет сразу после слова download)
и менять переменную, в итоге было что-то похожее на:
if($url ~/^download/([^/]+).*/) {
set $limit_conn = $1;
}
(как-то так, точно уже не помню, а конфиг не сохранил)
но конфигурация не работала, ругаясь на то. что я не могу изменять значение данной переменной в этом месте.
Если же я выносил set из под этого условия, то все работало.
В общем вопрос в том, можно ли приведенный выше конфиг записать в одной location а не плодить их?
Спасибо.