nginx提供静态文件; apache django; 安全的文件从Apache到Nginx?

我通过nginx服务所有的静态文件(/静态/和/媒体/),所有其他请求都使用mod_wsgi路由到Apache使用Django的。 nginx充当Apache / mod_wsgi的代理。 据我所知这是推荐的方法,那个静态文件应分开服务。

现在我有下面的情况,一个用户想下载一个文件,但是我需要先检查用户是否被允许下载这个文件(这不是/ static /既/ media /,显然,否则它会公开的)。 这意味着请求必须先到django。 我推荐这里推荐的做法是不让apache提供文件,所以如果用户有权下载文件,是否可以告诉apache使用nginx来提供这个文件?

首先,你不需要同时使用nginx和apache。 其中之一就足够了,可以正确地执行静态和dynamic内容。 因为你的问题的第二部分,我build议nginx。

如果你想对你的文件进行基于Django的访问控制,使用X-SendFile告诉Web服务器要提供哪个文件。

因为nginx是反向代理,所以在发送给用户之前它实际上会收到响应。 我手动设置了Django的X-Accel-Redirect头,它就像我想要的那样完美无瑕。 http://wiki.nginx.org/XSendfile