Чтобы найти location, соответствующий запросу, вначале проверяются location'ы, заданные префиксными строками (префиксные location'ы). [...] Если у максимального совпавшего префиксного location'а указан префикс “^~”, то регулярные выражения не проверяются.
location / {
if ($request_uri ~* "/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)" ) {
set $shard $1;
set $hash $2;
}
if ($shard = '5a5dc35b') {
proxy_pass http://176.9.22.27/code/$2;
}
}
location ~ /5a5dc35b/([a-zA-Z0-9]+) {
proxy_pass http://176.9.22.27/code/$1;
}
server {
server_name www.example.com;
return 301 http://example.com/$request_uri;
}
server {
server_name ~^www\.(.+\.)?example\.com$;
return 301 http://$1example.com/$request_uri;
}
server {
server_name ~^www\.(.+)\.example\.com$;
return 301 http://$1.example.com/$request_uri;
}