Last update on .

在《Ubuntu服务器中用Nginx+uWSGI部署Django项目》一文中,我们采用Nginx反向代理+uWSGI方式部署了Django,部署完成后,通过云服务器ip:9999,即可访问网站。网站肯定不能一直用ip地址访问,最终还是要通过https域名访问的,这时候我们就需要在此基础上使用Let’s Encrpyt部署SSL证书了。

Let’s Encrpyt是什么

Let’s Encrypt是一套新型证书管理器(简称CA),能够轻松帮助用户获取并安装免费TLS/SSL证书,并借此在Web服务器上实现HTTPS加密。官方网址:https://letsencrypt.org/

系统环境以及Django版本等还是延续上一篇文章,这里不再赘述。在这里我们采用Certbot方法安装Let's Encrypt。

安装Certbot

sudo apt install certbot python3-certbot-nginx

Certbot 现在可以使用了,这时可以检查Nginx的sites-available 文件夹中,有没有这个/etc/nginx/sites-available/example.com配置文件,有的话在后面的命令中,Certbot会自动将SSL配置文件写好,当然没有也没问题,后面可以手动添加配置文件内容。

获取SSL证书

使用如下Certbot命令,获取SSL证书

sudo certbot --nginx -d example.com -d www.example.com

执行命令后会出现一堆英文,大概就是证书下载好了,放在某某文件夹了;证书有效期到什么时候;已经做好了自动续订;巴拉巴拉。

因为当时操作没留记录,就不帖英文文字了。

检查Nginx配置文件

看一下/etc/nginx/sites-available/example.com配置文件,大概要是这样就对了

server {
 server_name www.example.com;
  location / { uwsgi_pass 127.0.0.1:8090; include /etc/nginx/uwsgi_params; }
 listen [::]:443 ssl; 
listen 443 ssl; 
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
 include /etc/letsencrypt/options-ssl-nginx.conf;
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 }

验证是否配置成功

重启Nginx试用一下,发现通过域名访问网站的时候,出现小锁图标,说明成功了。

 

 

 

其他说明

配置证书完成后重启Nginx,遇到错误提示:

[emerg] BIO_new_file failed;

Failed to start A high performance web server and a reverse proxy server;

如果大家看到这些关键字,基本上就是Nginx配置文件中letsencrypt的证书地址敲错了,仔细检查即可。

 

评论

No comments yet.

Please log in by using LinkedIn Weibo to leave a comment.