flask踩坑记(一):ubuntu nginx配置https

本人使用的是腾讯云服务器,配置可能略有不同,请大家适当参考。

申请ssl证书

云产品->域名与网站->SSL证书管理
flask踩坑记(一):ubuntu nginx配置https_第1张图片
根据官方步骤操作得到一个压缩包文件
flask踩坑记(一):ubuntu nginx配置https_第2张图片
服务器上我使用的是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
flask踩坑记(一):ubuntu nginx配置https_第3张图片
kill 17220
然后再重启nginx:

nginx -s reload

你可能感兴趣的:(flask踩坑记(一):ubuntu nginx配置https)