2016-06-11 48 views
0

我在Django中构建了一个网站,但我想将它作为“HTTPS”(通过端口443加密)提供。通过HTTPS服务Django站点

我已经有了证书,但是如何配置Django来使用它?它可能真的是Django不支持这个开箱即用,如果是的话,我应该如何去作为HTTPS服务的网站?

服务器是Ubuntu 14.04

+3

这与Django无关。您必须将您的Web服务器配置为通过HTTPS提供服务。 – Selcuk

+0

是w Selcuk。不要将Django的便捷开发服务器与生产预期的Web服务器相混淆。举例来说,nginx就可以做到这一点,并且有很多关于https的指南。希望拥有https的开发者的一个明显有效的原因可能是更密切地匹配产品。然而,nginx-django https虽然简单,但仅仅是不同而已,同时也是透明的,而不是让麻烦值得,恕我直言。 –

回答

5

它与Django无关,但它实际上被支持。请按照下列步骤操作:

1.获得证书 使用letsencrypt,因为它是免费的!

2.更新资料库和安装工具 在终端输入以下命令:

sudo apt-get install git 

sudo apt-get update 

,如果你不具备的git已经通过这个命令进行安装3.设置,

  1. 目录更改为Django项目目录中cd

    cd django_project 
    
  2. 运行这些命令:

    git clone https //github.com/letsencrypt/letsencrypt 
    

    然后

    cd letsencrypt 
    
    ./letsencrypt-auto --help 
    

如果你在这里,它意味着一切工作正常!因此进入下一个步骤:

service nginx stop 

(如果使用其他Web服务器试图阻止他们)

使用您的域名替换example.com:

./letsencrypt-auto certonly --standalone -d example.com 

sudo nano /etc/nginx/sites-available/django 

编辑文件一样这样的:

server { 
#listen 80 default_server; 
#listen [::]:80 default_server ipv6only=on; 
listen 443 ssl; 
server_name example.com; 
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 

server { 
listen 80; 
server_name example.com; 
return 301 https://$host$request_uri; 
} 

现在只需重新启动服务器即可。

+0

@Stuffe如果我的回答很有用,请检查它。 – Uncle

+0

感谢您花时间回复。其实我已经有了一个证书(letsencrypt)。我没有在我的服务器上安装nginx,但是看看它现在是什么。 – Stuffe

+0

好吧,你会得到勾号,查看nginx后找出并不难。 – Stuffe