Se você usar capturas nomeadas para as capturas, poderá usá-las para reescrever a solicitação em seu local nomeado:
server {
listen 80;
server_name .example.com;
root /var/www;
## Serves file (matching pattern: /<size>/<MEDIA>/<file na-me><.ext>)
location / {
## ?<name> assigns the capture to variable $name
location ~* ^/(?<size>\d+x\d+)/(?<guid>([\w])([\w])([\w])[-\w]+)/[^\.]+\.(?<ext>\w+)$ {
try_files /$3/$4/$5/$2/$1.$6 @backend;
}
}
## backend service
location @backend {
## rewrite ... break; just sets $uri and doesn't perform a redirect.
rewrite ^ /$guid/$size/$ext break;
proxy_pass http://127.0.0.1:8080;
}
}