Você pode usar:
location ~ ^/foo/bar/(\d|\d\d|1[0-4]\d|150)/ {
proxy_pass backend1;
}
location ~ ^/foo/bar/(15[1-9]|1[6-9]\d|[23]\d\d|400)/ {
proxy_pass backend2;
}
...
Mas por que você faz o balanceamento de carga de maneira tão heterogênea? Por que não apenas shard por id de imagem / hash de nome? Sua solução resultará em diferentes cargas e até carregar padrões em diferentes servidores. Seria complicado administrá-los.