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

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

我通过 nginx 提供所有静态文件(/static/ 和 /media/),所有其他请求都使用 mod_wsgi 路由到 apache 以使用 django。nginx 充当 Apache/mod_wsgi 的代理。据我所知,这是推荐的方式,应该单独提供一个静态文件。

现在我遇到以下情况,用户想要下载一个文件,但我首先需要检查用户是否被允许下载此文件(显然,该文件不在 /static/ 上也不在 /media/ 上,否则它将是公开的)。这意味着请求必须首先发送到 django。我想这里推荐的做法是 - 不 - 让 apache 提供该文件,因此如果用户被授权下载该文件,我有什么办法可以告诉 apache 使用 nginx 来提供该文件吗?

答案1

首先,您不需要同时使用 nginx 和 apache。其中一个就足够了,可以正确处理静态和动态内容。根据您问题的第二部分,我建议使用 nginx。

如果你想要基于 django 的文件访问控制,请使用发送文件告诉网络服务器要提供哪个文件。

答案2

因为 nginx 是反向代理,所以它实际上在将响应发送给用户之前会先接收响应。我从 django 手动设置了 X-Accel-Redirect 标头,它完全按照我的要求运行。http://wiki.nginx.org/XSendfile

相关内容