2012-08-15 49 views
0

我配置了nginx来运行HTTPS。我还重写了所有规则,以便它在HTTPS下运行。Django runserver显示HTTP

但是,Django仍然在内部运行HTTP吗?

Django version 1.2.1, using settings 'myproject.settings' 
Development server is running at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 
[14/Aug/2012 23:57:04] "GET /app/c HTTP/1.0" 200 4 
[14/Aug/2012 23:57:09] "GET /app/c HTTP/1.0" 200 4 

是的。我知道我的版本已经过时了。

我检查了request.is_secure,它在我访问HTTPS时返回True。

+0

你怎么不使用WSGI或至少FastCGI? – 2012-08-15 04:01:38

+0

@ IgnacioVazquez-Abrams嗯你是什么意思?然而,我的确在运行gunicorn。 – User007 2012-08-15 04:09:58

回答

1

正确,在内部您将使用http通过代理服务器进行通信,但所有外部通信都将使用https方法。

为了进一步保护您的流量,请确保您只绑定到本地地址,或者使用套接字连接nginx和您的应用程序服务器。

我的确希望你不是在生产中使用django的开发服务器,而应该使用诸如gunicorn之类的东西作为你的应用服务器。

+0

谢谢。的确,我确实使用gunicorn进行生产。只是一个简短的问题,当你说绑定到一个本地地址,你在nginx conf中说我只绑定'http:// localhost:8000'?只要可能,我也只使用'$ host'变量。 – User007 2012-08-15 04:10:48

+0

仅绑定到您的应用程序服务器/ gunicorn的“本地主机”主机。对于你想绑定到你想要听的所有地址的nginx。 – 2012-08-15 04:32:56