【问题标题】:Serving Django site over HTTPS通过 HTTPS 服务 Django 站点
【发布时间】:2016-06-11 14:13:29
【问题描述】:

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

我已经有一个证书,但是如何配置 Django 来使用它?难道真的是 Django 不支持这个开箱即用,如果是这样,我应该如何将网站作为 HTTPS 提供服务?

服务器是 Ubuntu 14.04

【问题讨论】:

  • 这与 Django 无关。您必须将 Web 服务器配置为通过 HTTPS 提供服务。
  • 是的,塞尔丘克。不要将 Django 方便的开发服务器与用于生产的 Web 服务器混淆。例如,nginx 就可以很好地解决问题,并且有许多关于 https 的指南。想要在 dev 上使用 https 的一个明显正当理由可能是更紧密地匹配 prod。然而 nginx-django https,虽然简单,但也足够不同,同时也是透明的,恕我直言,不值得费心。

标签: python django ssl https


【解决方案1】:

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

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

2。更新存储库和安装工具 在终端输入这个命令:

sudo apt-get update

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

sudo apt-get install git

3.设置,

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

    cd django_project
    
  2. 运行这些命令:

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

    然后

    cd letsencrypt
    
    ./letsencrypt-auto --help
    

如果您在这里,则表示一切正常!所以去下一步:

service nginx stop

(如果您使用其他网络服务器,请尝试阻止它们)

将 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;
}

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

【讨论】:

  • @Stuffe 如果我的回答有用,请查看。
  • 感谢您抽出宝贵时间回复。实际上我已经有一个证书(letsencrypt)。我的服务器上没有安装 nginx,但正在查看它现在是什么。
  • 好的,你明白了,在研究了 nginx 之后并不难弄清楚 :)
猜你喜欢
  • 2010-10-19
  • 2018-11-03
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2020-10-22
相关资源
最近更新 更多