Nginx returning 404 with Python-urllib but fine if accessed from browser

apache-2.2http-status-code-404nginxpython

We have a repo server running on a Windows box serving some static files that are supposed to be grabbed by our worker nodes using Python-urllib. The problem lies in the fact that when we make a request to a file that we know exists using Python we receive a 404 error, however, if I access the file directly from my browser, using the same link that Python-urllib is using, it works perfectly fine, and the file is downloaded.
Example access log:

xxx.xxx.xxx.xxx - - [24/Jul/2013:17:15:53 -0400] "POST /x/dl/Bukkit_Beta.jar.conf HTTP/1.1" 405 172 "-" "Python-urllib/2.7"

I did notice something weird in error.log:

2013/08/04 22:29:11 [error] 6456#2696: *807 CreateFile() "C:\Users\Administrator\Desktop\Nginx/html/MCProHosting/dl/405" failed (2: The system cannot find the file specified), client: 198.15.64.226, server: localhost, request: "GET /MCProHosting/dl/405 HTTP/1.1", host: "repo.mcprohosting.com"

It does appear that from these logs a 405 is being generated, rather than a 404, but Python shows a 404 page. Please note that this is a fresh download of nginx the same directory structure works under Apache if we transfer over the htdocs/html folder.

No configuration changes have been made to Nginx

Best Answer

You can't make POST requests to static resources in nginx, that's it.

But you can do some trick by using the error_page directive:

error_page 405 =200 $request_uri;