使用Django、Gunicorn、Nginx禁用以代码形式执行静态文件

使用Django、Gunicorn、Nginx禁用以代码形式执行静态文件,django,security,nginx,gunicorn,static-files,Django,Security,Nginx,Gunicorn,Static Files,声明“如果您正在为自己的静态文件提供服务,请确保禁用了Apache的mod_php之类的处理程序,它将以代码形式执行静态文件。”如何禁用Gunicorn+Nginx中可能存在的任何此类处理程序?Nginx默认情况下没有任何处理程序这样做。如果在nginx配置中的服务器部分没有配置任何处理程序,则无需担心。如果是干净的nginx安装,就没有什么可担心的了 如果只有一种方法可以运行python代码,请检查您的nginx配置—通过gunicorn和django的wsgi.py文件。基本上django开

声明“如果您正在为自己的静态文件提供服务,请确保禁用了Apache的mod_php之类的处理程序,它将以代码形式执行静态文件。”如何禁用Gunicorn+Nginx中可能存在的任何此类处理程序?

Nginx默认情况下没有任何处理程序这样做。如果在nginx配置中的
服务器
部分没有配置任何处理程序,则无需担心。如果是干净的nginx安装,就没有什么可担心的了


如果只有一种方法可以运行python代码,请检查您的nginx配置—通过gunicorn和django的
wsgi.py
文件。

基本上django开发人员正在警告您一个众所周知的web漏洞

由于nginx只能服务于静态文件,因此它必须使用应用程序服务器(php-fpm、gunicorn、uwsgi)来处理动态页面

如果您使用的是旧的nginx的PHP配置(使用PHP fpm作为处理程序),并且您为django应用程序添加了gunicorn,那么用户可以设法将PHP文件上载到django的
媒体
目录,然后通过旧的PHP处理程序执行

这是一个非常奇怪的情况,这种情况不可能发生在一个新的站点上,您永远不会为django应用程序添加PHP处理程序

PHP处理程序如下所示:

location ~ \.php$ {
  expires off;
  fastcgi_pass 127.0.0.1:9001;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
  fastcgi_keep_conn on;
}

我怎么做这样的考试?