12.17 nginx负载均衡 什么是负载均衡
代理一台机器为代理,两台机器,就叫负载均衡
代理服务器后面可以是多台web服务器,多个web服务器提供服务的时候,就可以实现一个负载均衡
正常情况下,用户访问web服务器,是一台一台去请求;要么就是指定一个ip,把这域名解析到多台服务器上
例:
用户1 –> web1服务器
用户2 –> web2服务器
用户1 –> web1服务器(宕机)
用户1因为解析到了web1,但web1宕机了。没法访问
这时候如果使用了nginx负载均衡,web1宕机,代理服务器就不会继续把请求发送到web1
配置负载均衡
通过dig可以查看到域名的解析ip地址
包“ bind-utils ”
[root@aminglinux-02 vhost]# yum install -y bind-util [root@aminglinux-02 vhost]# dig qq.com ; <<>> dig 9.9.4-redhat-9.9.4-50.el7_3.1 <<>> qq.com ;; global options: cmd ;; got answer: ;; ->>header<<- opcode: query, status: noerror, id: 29688 ;; flags: qr rd ra; query: 1, answer: 1, authority: 0, additional: 1 ;; opt pseudosection: ; edns: version: 0, flags:; udp: 4096 ;; question section: ;qq.com. in a ;; answer section: qq.com. 353 in a 14.17.32.211 ;; query time: 35 msec ;; server: 119.29.29.29#53(119.29.29.29) ;; when: 三 8月 16 00:14:17 cst 2017 ;; msg size rcvd: 51
新增一个配置文件load.conf
upstream qq_com //这个名字可以自定义 { ip_hash; //目的是为了让同一个用户始终保持在同一个机器上 server 14.17.32.211:80; //如果域名解析端口是80,这段配置上的指定端口80是可以省略的 } server { listen 80; //定义监听端口 server_name www.qq.com; //域名 location / { proxy_pass http://qq_com; //这里填写的是upstream 的名字即“http://upstream”,因为作为一个模块,代理访问的是通过解析后的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; } }
upstream来指定多个web server
当有多个服务器同时对一个域名提供服务的时候,长时间访问一个域名,在一定的时效内,会出现需要重新登录或者是说跳转到另外一个地址的服务器上;ip_hash,就是使通过这个代理访问的同一个域名的多个ip的服务器是,始终保持在一个ip上对这个域名进行访问
测试
没有使用负载均衡配置的时候,curl -x 127.0.0.1 默认访问的是虚拟主机的
[root@aminglinux-02 vhost]# curl -x127.0.0.1:80 www.qq.com this is the default site.
配置完成后检查语法和重新加载服务
-t && -s reload
测试
[root@aminglinux-02 vhost]# curl -x127.0.0.1:80 www.qq.com var _mtac = {}; (function() { var mta = document.createelement("script"); mta.src = "http://pingjs.qq.com/h5/stats.js?v2.0.2"; mta.setattribute("name", "mtah5"); mta.setattribute("sid", "500460529"); var s = document.getelementsbytagname("script")[0]; s.parentnode.insertbefore(mta, s); })(); </script> </body> </html><!–[if !ie]>|xgv00|66aaf676da3c9edb56f9fd489826d8e6<![endif]–>
这时curl到的是qq的主页,反馈回来的是网页的源码
知识点:
nginx不支持去代理https ,支持http、tcp
解决办法,nginx监听443端口,但web服务必须是80端口
12.18 ssl原理 http和https的区别
https通信是加密的,如果不加密,中间传输数据包的时候会被截到,就会导致信息泄露,https就是对这个通信的数据包进行加密
ssl工作流程 浏览器发送一个https的请求给服务器; 服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面,这套证书其实就是一对公钥和私钥; 服务器会把公钥传输给客户端; 客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密; 客户端把加密后的随机字符串传输给服务器; 服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串>通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容); 服务器把加密后的数据传输给客户端; 客户端收到数据后,再用自己的私钥也就是那个随机字符串解密;
12.19 生成ssl密钥对
在自己的虚拟机生成ssl
需要用到openssl工具
如果没有安装就安装
[root@aminglinux-02 conf]# rpm -qf `which openssl` openssl-1.0.1e-60.el7_3.1.x86_64 生成密钥
[root@aminglinux-02 conf]# openssl genrsa -des3 -out tmp.key 2048 generating rsa private key, 2048 bit long modulus . ………………………………… e is 65537 (0x10001) enter pass phrase for tmp.key: //输入密码 verifying – enter pass phrase for tmp.key: //再次输入密码
命令解释
openssl genrsa -des3 -out tmp.key 2048 genrsa 生成rsa的密码 2048 2048长度 名字为 tmp.key
因为这个加密,之后在nginx访问的时候还会提示输入密码,这样会很麻烦,所以就需要去掉密码
转换key,取消密码
[root@aminglinux-02 conf]# openssl rsa -in tmp.key -out aminglinux.key enter pass phrase for t
租用云服务器优势说明路由器挂载云服务器怎么操作云服务器如何上传静态网站是什么在浏览器输入公司网址就会自动跳转到网站后台php如何将字符串转为数组木马我都清理了怎么还是打不开云服务器哪个地方服务器不用备案广东联通租赁服务器云主机怎么用的