Based on your post, I was actually dug a little bit deeper because there was nowhere in my Perl I could find that returned 1.
After disabling most of the Perl, I was getting 499 errors which made sense, the client was closing the connection. It looks like part of the issue is that attached to the location I have a post_action that runs another perl method.
This Perl method doesn't have a return value and, in it's place, nginx is just using 001. When adding a return code to this method, it takes over the $status variable in the nginx log file. In general, have the method return $r->variable('status') seems to properly emulate exactly what codes the proxy is actual returning to the browser.
The one exception to this (that I can find) though is if the nginx return code was 499. Then I just see 009 in my log files. Is there anything better in nginx I can use than $status for getting the status code returned to the browser? Alternatively, is there anything I can do so that the log file doesn't read the status code from the post_action and instead just reads it from the initial location?