本人使用的是腾讯云服务器,配置可能略有不同,请大家适当参考。
申请ssl证书
云产品->域名与网站->SSL证书管理
根据官方步骤操作得到一个压缩包文件
服务器上我使用的是Nginx,选择Nginx下的.crx和.key文件用ftcp上传至服务器下/etc/nginx/ssl目录。
修改Nginx配置
打开 Nginx 的默认配置文件 /etc/nginx/nginx.conf
server {
charset utf-8;
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://127.0.0.1:5002;
#转发到gunicorn的IP和端口号
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#后面的这些不用管粘上就行了
}
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name www.xxx.com;
ssl_certificate /etc/nginx/ssl/xxx.crt;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
## Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:5002;
#rewrite (.*) https://www.xxx.com$1 permanent;
#转发到gunicorn的IP和端口号
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
重启nginx
nginx -s reload
顺利的话使用浏览器访问你的域名,应该就能自动变成https
遇到的坑
1、防火墙未开启
腾讯云的ubuntu18.0.4系统防火墙默认是inactive
打开防火墙:
使用
sudo ufw allow 80 443
放行需要的端口号
2、80端口被占用
列出监听的TCP端口
netstat -ltunp
kill 17220
然后再重启nginx:
nginx -s reload