2012-08-15 107 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