提到了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、设置完成后,会有一会儿的等待时间,设置完成之后:
评论区