I have two working configurations that, on the surface, seem to do the same thing. They both accomplish the functionality that I need: location ~ ^/(css|images|js)/ { location ~ '^/(css|js)/[0-9]{8}-(.*)$' { alias /$1/$2; } root /server/path/to/web/root; } **AND** location ~ ^/(css|images|js)/ { rewrite '^/(css|js)/[0-9]{8}-(.*)$' /$1/$2 break; root /server/path/to/web/root; } They both take a URL like `/css/87654321-styles.css` and deliver the file `/css/styles.css`. I lean toward the second solution because it's more succinct, but I don't know if one is better than the other for performance reasons, unintended side-effects, etc. Here's my original SO post, for reference/context: http://stackoverflow.com/q/27406188/244826 ---------- **UPDATE** After being directed to the [documentation for the Nginx rewrite module][1], I found these interesting lines: > The ngx_http_rewrite_module module directives are processed in the following order: > > - the directives of this module specified on the server level are executed sequentially; > - repeatedly: > - a location is searched based on a request URI; > - the directives of this module specified inside the found location are executed sequentially; > - the loop is repeated if a request URI was rewritten, but not more than 10 times. So, if I used the `rewrite` directive without the `break` flag, there could be at least one additional loop of the `server` level directive. [1]: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html