Django在远程运行时内置测试服务器有多危险?

时间:2011-09-28 21:33:29

标签: django security nginx

关于以manage.py runserver命令启动的内置调试服务器,Django文档声明“不要在任何类似生产环境的地方使用此服务器”。

如果我想在远程计算机上通过ssh开发Django应用程序,那么使用Nginx作为运行Django调试服务器的代理是合理的事情吗? Django调试服务器是不安全的,还是不是为了处理大量流量而构建的?

3 个答案:

答案 0 :(得分:5)

来自the Django docs

  

请勿在生产设置中使用此服务器。它没有经过安全审核或性能测试。 (这就是它将如何保留。我们的业务是制作Web框架,而不是Web服务器,因此改进此服务器以便能够处理生产环境超出了Django的范围。)

所以,这回答了后两个问题。至于前者,它取决于您的调试服务器的设置方式。如果您的服务器暴露给公共Internet,没有防火墙阻塞端口8000,并且您打算将runserver与默认的127.0.0.1地址不同,请设置更“正确”的应用程序堆栈

如果您要使用nginx,为什么不使用suggested FastCGI configuration,以便您的调试环境与未来的生产环境更相似?

答案 1 :(得分:3)

现代Web服务器具有与安全性和性能相关的各种功能,而Django开发服务器则没有。它是一个精简的,非常基本的单线程服务器,用于开发目的。因此,为什么文档说不在生产环境中使用它。

然而,人们害怕这种说法。关键的定义点是开发。无论是在本地计算机上进行开发还是在远程VPS或整个集群上进行开发都是重点。

如果服务器是公开可用的,它将对黑客攻击,攻击,DoS攻击等开放。但是,如果没有任何重要性,只有一个开发站点在虚拟数据上运行,那没关系。所以,是的,您可以使用远程服务器上的开发服务器进行开发。这完全没有错。我唯一的注意事项是避免使用生产数据(例如使用生产数据库中的转储进行开发),因为这些数据可能会受到影响。否则,这没什么大不了的。

答案 2 :(得分:1)

  

Django调试服务器是不安全的,还是不是为了处理大量流量而构建的?

它既是隐身又不是为了重大交通!

通过将测试服务器隐藏在代理服务器后面可能会解决一些问题,但是如果你遇到那么多麻烦,那么你已经完成了与正确工作相同的工作量。 ..正确的是WSGI。使用mod_wsgi,gunicorn,或者检查一下,获得更多前沿的解决方案:http://bartek.im/blog/2012/07/08/simplicity-nginx-uwsgi-deployment.html。无论你做什么......不要在生产环境中使用DJANGO测试服务器!