之前把我的Django项目部署到了服务器上,打开网站,浏览器会提示不安全,原因是https协议是明文的,要改成https加密的协议,这样用户和网站交互信息时比较安全。
因为我用的是Nginx挡在最前面,所以只要设置Nginx就可以了,Django保持原样
要做https首先要生成证书,你可以用服务器自己生成,如何生成证书自行百度吧,我用服务器生成了一个好像不太好使,后来我直接用阿里云免费申请了一个,拿到手就可以用了,很方便
阿里云搜索ssl,进去后点购买,注意,我不是让你花钱买,我们要用的是免费 免费 免费,不要钱的啊。因为里面只有一种是免费的,其它都炒鸡贵,而且这个免费的是隐藏的,要像走迷宫一样的点击后再才出现
先点这个Symantec
再点这个1个域名
再点这个免费的
购买后在控制台就可以看到你的证书了
接下去你需要绑定你的域名才能使用
如果你的域名dns提供商不是阿里云,选择手工DNS验证,按提供添加DNS记录就可以了,如果用的阿里云的直接自动
等待审核,大概1个小时不到。证书下来后到控制台去点下载,下载下来两个文件
把这两个文件传到服务器/etc/nginx/ssl/
配置/etc/nginx.conf,其实就是把原来的80改成443,加上ssl on;再加上两个证书的路径,然后再加一个server监听80,跳转到https
server {
listen 80;
server_name www.bqu.cn;
server_name bqu.cn;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name www.bqu.cn;
server_name bqu.cn;
ssl on;
ssl_certificate "/etc/nginx/ssl/cert-bqu.cn.crt";
ssl_certificate_key "/etc/nginx/ssl/cert-bqu.cn.key";
location / {
proxy_intercept_errors on;
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;
}
error_page 404 /404.html;
location = /404.html {
root html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /static {
alias /var/www/lodgenotice/static;
}
}
修改好了重新加载一下nginx
nginx -s reload
如果有防火墙,就要开一下443端口,如果是阿里云的ECS还需要配置一下安全组
打开防火墙443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
阿里云ECS配置安全组
这样你的https就可以使用了,而且用户如果用http进你的站点,会自动跳转到https,再不用担心用户打开你的网站时出现不安全提示