通过HTTPS服务Django站点

Stu*_*ffe 0 python django ssl https

我在Django中建立了一个网站,但我想将其作为"HTTPS"(通过端口443加密).

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

服务器是Ubuntu 14.04

Unc*_*cle 5

它与Django无关,但它实际上得到了支持.请按照以下步骤操作:

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

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

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

如果你还没有git,请通过以下命令安装它:

sudo apt-get install git
Run Code Online (Sandbox Code Playgroud)

3.设置,

  1. 使用将目录更改为django项目目录 cd

    cd django_project
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行这些命令:

    git clone https //github.com/letsencrypt/letsencrypt
    
    Run Code Online (Sandbox Code Playgroud)

    然后

    cd letsencrypt
    
    ./letsencrypt-auto --help
    
    Run Code Online (Sandbox Code Playgroud)

如果你在这里,这意味着一切正常!所以转到下一步:

service nginx stop
Run Code Online (Sandbox Code Playgroud)

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

用您的域名替换example.com:

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

sudo nano /etc/nginx/sites-available/django
Run Code Online (Sandbox Code Playgroud)

像这样编辑文件:

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;
Run Code Online (Sandbox Code Playgroud)

server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

现在只需重启服务器.