I have a work around for the issue until the bug is fixed. It is using the 'evil' if statements, but it does handle looking for files and directories before routing to index.

Code highlighting:

location/api{## URL string to use for api ##
alias/home/api/site_files/;## Site root for api code ##
## Check for file existing and if there, stop ##
if(-f$request_filename){break;}## Check for file existing and if there, stop ##
if(-d$request_filename){break;}## If we get here then there is no file or directory matching request_filename ##
rewrite(.*)/api/index.php?$query_string;## Normal php block for processing ##
location~\.php${fastcgi_split_path_info^(.+\.php)(/.+)$;fastcgi_passunix:/var/run/php5-fpm.sock;fastcgi_indexindex.php;includefastcgi_params;}}

This still doesn't seem to address directories that are in the alias location. Even if I change your code to try_files $uri $uri/ /test/test/fallback?$args; I don't get directory access when needed. If I have a file rules.txt in /tmp/docs/ I should be able to access that file from http://example.com/test/docs/rules.txt, however an attempt here only brings me back to the fallback.

With my solution above you can access existing files in the root of your alias as well as in subdirectories.