" name="sm-site-verification"/>
侧边栏壁纸
博主头像
PySuper博主等级

千里之行,始于足下

  • 累计撰写 203 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Nginx + uwsgi 部署的项目添加SSL认证 | HTTPS

PySuper
2020-03-31 / 0 评论 / 0 点赞 / 11 阅读 / 6389 字
温馨提示:
所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

提到了Nginx和uwsgi,以及HTTP和HTTPS,就顺便复习一下:

Nginx负载均衡

  • 负载均衡
    • 有一组相互独立的计算机系统组构成
    • 通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作,共同负载,均衡压力;

对客户端来说,整个集群可以视为一台超高性能的独立服务器

  • 实现原理
    • 要有一个可以控制连接数据库的控制端
    • 它截断了数据库和程序的直接连接,所有的程序来访问这个中间层,然后再由这个中间层来访问数据库
    • 这样,我们就可以具体控制访问某个数据库了;
    • 然后还可以根据数据库的当前负载,采取有效的均衡策略,来调整每次连接到哪个数据库

WSGI、uWSGI、uwsgi

  • WSGI
    • web服务器网关接口,是一套协议;
    • 用于接收用户请求并将请求进行初次封装,然后将请求交给web框架
    • 实现wsgi协议的模块:
      • wsgiref,本质上就是编写一个socket服务端,用于接收用户请求(django)
      • werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask)
  • uWSGI
    • 是一个web服务器,实现了WSGI协议、uWSGI协议、http协议
  • uwsgi
    • 与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型

HTTP、HTTPS

  • HTTP
    • 是互联网上应用最为广泛的一种网络协议;
    • 是一个客户端和服务器端请求和应答的标准(TCP);
    • 用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  • HTTPS
    • 是以安全为目标的HTTP通道,简单讲是HTTP的安全版;
    • 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
    • 主要分为两种:
      • 建立一个信息安全通道,来保证数据传输的安全
      • 确认网站的真实性

在我们升级HTTPS的时候要注意,SSL证书是肯定需要的,我这里用的是阿里云的服务器,也就用了上面的SSL证书

另外,需要注意静态文件的位置,比如我的静态文件是放在七牛云上面的,所以又申请了一个CDN的SSL证书

域名HTTPS升级

获取SSL证书

1、登录阿里云,点击进入控制台
第一步

2、搜索ssl,进入SSL证书管理
第二步

3、在SSL证书一栏中,点击购买证书
第三步

4、选择免费版(个人版),不要钱,直接去支付
第四步

5、同一协议,付款,后面还会让你验证一下,还要等待工作人员处理,不过很快的
第五步

6、这里我们就能看到我们的SSL证书啦
第五步

7、 在SSL证书这里,点击部署,可以看到部署信息,在这里配置绑定的域名,再点击下载,下载SSL证书
第五步

Server 配置

Server中的配置,阿里云上介绍的很详细,我这里就总结总结自己的使用过程

  • 修改服务器中的server设置:
# 这是我在/etc/nginx/sites-enabled/site.cong中的配置
server {
    listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    server_name xxx;  #将localhost修改为您证书绑定的域名,例如:www.example.com。

    proxy_connect_timeout 600;  # 连接请求超时时间
    proxy_read_timeout  600;  # 应答请求超时时间
    proxy_send_timeout  600;  # 发送请求超时时间

    charset utf-8;
    client_max_body_size  75M;

    # SSL 认证
    ssl on;
    root  html;
    index index.html index.htm;
    ssl_certificate xxx;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key xxx;   #将domain name.key替换成您证书的密钥文件名。
    ssl_session_timeout 5m;
    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;

    location / {
        add_header  Content-Security-Policy upgrade-insecure-requests;
        uwsgi_pass  xxx;  # IP: Port
        index /etc/nginx/uwsgi_params;
        uwsgi_read_timeout  2100s;
    }
}

server  {
    listen 80;
    server_name xxx;    # 自己的域名
    proxy_connect_timeout 600;  # 连接请求超时时间
    proxy_read_timeout  600;  # 应答请求超时时间
    proxy_send_timeout  600;  # 发送请求超时时间
    
    rewrite ^(.*)$ https://$host$1 permanent;
}
  • 下载的证书是个压缩包,解锁之后cert/中有两个文件:.pem.key,我们把两个文件的绝对路径放到配置文件中
  • 重新加载nginx的配置文件:nginx -s reload
  • 重启nginx:sudo service nginx restart

这里我们的域名升级就结束了,如果你的静态文件在当前服务器上,在配置server的时候,location中添加上静态文件路径就行了,但是如果你的静态文件在别的服务器上,对于静态文件就需要同样的HTTPS升级了。

静态文件HTTPS升级

我的静态文件是放在七牛云上的,这里的配置方法主要针对七牛云

1、登录七牛云,进入控制台
第一步

2、点击CDN,开始设置静态文件服务器的域名
第二步

3、在设置页面找到HTTPS的相关设置,点击修改,出现如下界面

第三步

4、设置完成后,会有一会儿的等待时间,设置完成之后:
第四步


0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区