Как написать динамический location и try_files в конфиге NGINX?
Вы почти нашли решение, только «/» в начале пропустили:location ~ ^/([a-zA-Z0-9]*)/ {
    root /usr/share/nginx/html;
    try_files $uri $uri/ /$1/index.html;
}
трай файл вообще  не нужно использовать
поскольку все коды должна отрабатывать CMS.
Если у вас apache+nginxerror_page 401 403 404 405 500 502 503 = @fallback;
        location @fallback {
                proxy_pass              http://127.0.0.1:82;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                }
Если чисто nginx то там еще проще по аналогие сделайте.
 За то, как отдавать ошибку, должен отвечать сам сайт, как минимум  у всех cms есть сове офомление 404
Вы привели частный случай но на сайте может быть миллион тонкостей, и в любом раскладе их должна попытаться обработать cms