On Tue, Apr 30, 2013 at 10:25:34AM -0400, mrtn wrote: Hi there,
> I need to make sure a file actually exists before proxy_pass-ing the request > to an upstream server. I don't serve existing files directly using Nginx > because there are some application-specific logic i need to perform on the > application server for such requests. I confess I don't fully understand that -- if file X exists on the local filesystem, then ignore it and proxy_pass to server Y; but if it doesn't, then don't proxy_pass and do something else instead, which is presumably better than caching the 404 from server Y. But that's ok; I don't have to understand it. > I've looked at try_files, but it seems like it will serve the file > straightaway once it is found, which is not what I want here. Correct. try_files serves the first file found, or else rewrites to the final argument. > Another way > is to use if (!-f $request_filename), but as mentioned here: > http://wiki.nginx.org/Pitfalls#Check_IF_File_Exists, it's <snip> > a terrible way to check the existence of a file. The entire purpose of "-f" is to check whether the thing named is a file. The common case is something like "if it is a file, serve it; else do something different", and now that try_files exists, "-f" is not the best way to achieve the common case. > Is there a feasible yet efficient way? It sounds like "-f" is what you want, perhaps following the example shown on http://wiki.nginx.org/IfIsEvil f -- Francis Daly [email protected] _______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
