A solução que finalmente usei para esse problema específico com a localização, contendo chaves é evitá-las e repita o bloco de localização para cada combinação possível. Isso significa
location ~* /[0-9](-.*)(\.html)$ {
para ... / 8 -...
location ~* /[0-9][0-9](-.*)(\.html)$ {
para ... / 88 -...
location ~* /[0-9][0-9][0-9](-.*)(\.html)$ {
para ... / 888 -... html.