LNMP架构(下)课堂笔记

9-25LNMP架构(下)
一、负载均衡
server  192.168.233.150:80 weight=1;
 
1、server标签参数说明:
weight=1 表示服务器权重,默认是1.数字越大表示接受的请求的比例越大
 
max_fails=1  表示nginx尝试连接后端主机失败的次数,一般企业场景建议用2~3次
 
fail_timeout=10s 在定义max_fails的失败次数后,距离下次检查的间隔时间,默认是10s。例如max_fails=5,如果5次都是404,那么等待10s再检查一次。一般业务设置为2~3秒。
 
backup 表示热备配置,备用服务器。当负载均衡算法为ip_hash时,后端服务器在负载均衡中的状态不能使weight和backup。
 
down  标记这个服务器不可用。这个参数配合ip_hash使用
 
 
二、SSL
 
 
 
SSL工作流程单向和双向区别
单向:
1.客户端say hello 服务端 
2.服务端将证书、公钥等发给客户端 
3.客户端CA验证证书,成功继续、不成功弹出选择页面 
4.客户端告知服务端所支持的加密算法 
5.服务端选择最高级别加密算法明文通知客户端 
6.客户端生成随机对称密钥key,使用服务端公钥加密发送给服务端 
7.服务端使用私钥解密,获取对称密钥key 
8.后续客户端与服务端使用该密钥key进行加密通信
 
双向:
1.客户端say hello 服务端
2.服务端将证书、公钥等发给客户端
3.客户端CA验证证书,成功继续、不成功弹出选择页面 
4.客户端将自己的证书和公钥发送给服务端 
5.服务端验证客户端证书,如不通过直接断开连接
6.客户端告知服务端所支持的加密算法 
7.服务端选择最高级别加密算法使用客户端公钥加密后发送给客户端 
8.客户端收到后使用私钥解密并生成随机对称密钥key,使用服务端公钥加密发送给服务端 
9.服务端使用私钥解密,获取对称密钥key 
10.后续客户端与服务端使用该密钥key进行加密通信
 
 
 
搭建自己的网站:
1、有域名的情况下,可以申请免费SSL证书
2、便宜购买服务器http://banwagong.cn/ 
3、购买域名:www.xinnet.com 
 
 
三、慢执行日志
#要掌握,很方便排查php网站出现的问题
 
 
四、php-fpm的open_basedir
#将php网站限定在一个目录下
#针对apache虚拟主机设置basedir,或者针对每个pool设置basedir
 
 
六、进程管理
配置最大子进程数合适的方法
#根据内存数和php占用情况来设定
测试php占用情况
 
#比如一开始设置最大子进程数50个,然后开启业务,,使用ps aux查看,看php-fpm消耗多少内存,假如消耗了10M内存,内存还剩3G(4G内存,系统分配1G),3G除以10M,等于300,也就是说最多可以分配300个子进程
 
七、扩展
1、负载均衡配置
Nginx通过upstream和proxy_pass实现了负载均衡。本质上也是Nginx的反向代理功能,只不过后端的server为多个。
 
2、负载均衡算法
Nginx的几种负载均衡算法:
1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受影响。
2、weight:指定轮询权重,weight值越大,分配到的几率就越高,主要用于后端每台服务器性能不均衡的情况。
3、ip_hash:每个请求按访问IP的哈希结果分配,这样每个访客固定访问一个后端服务器,可以有效的解决动态网页存在的session共享问题。
4、fair(第三方):更智能的一个负载均衡算法,此算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。如果想要使用此调度算法,需要Nginx的upstream_fair模块。
5、url_hash(第三方):按访问URL的哈希结果来分配请求,使每个URL定向到同一台后端服务器,可以进一步提高后端缓存服务器的效率。如果想要使用此调度算法,需要Nginx的hash软件包。
 
在upstream模块中,可以通过server命令指定后端服务器的IP地址和端口,同时还可以设置每台后端服务器在负载均衡调度中的状态,常用的状态有以下几种:
1、down:表示当前server暂时不参与负载均衡。
2、backup:预留的备份机,当其他所有非backup机器出现故障或者繁忙的时候,才会请求backup机器,这台机器的访问压力最轻。
3、max_fails:允许请求的失败次数,默认为1,配合fail_timeout一起使用
4、fail_timeout:经历max_fails次失败后,暂停服务的时间,默认为10s(某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。)
 
3、nginx路径别名
nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应。root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location
实例:
location ~ ^/weblogs/ {
root /data/weblogs/www.ttlsa.com;
autoindex on;
auth_basic            "Restricted";
auth_basic_user_file  passwd/weblogs;
}
 
如果一个请求的URI是/weblogs/httplogs/www.ttlsa.com-access.log时,web服务器将会返回服务器上的/data/weblogs/www.ttlsa.com/weblogs/httplogs/www.ttlsa.com-access.log的文件。
[info]root会根据完整的URI请求来映射,也就是/path/uri。[/info]
因此,前面的请求映射为path/weblogs/httplogs/www.ttlsa.com-access.log。
 
location ^~ /binapp/ {  
limit_conn limit 4;
limit_rate 200k;
internal;  
alias /data/statics/bin/apps/;
}
 
alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。如果一个请求的URI是/binapp/a.ttlsa.com/favicon时,web服务器将会返回服务器上的/data/statics/bin/apps/a.ttlsa.com/favicon.jgp的文件。
[warning]1. 使用alias时,目录名后面一定要加"/"。
2. alias可以指定任何名称。
3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4. alias只能位于location块中。
 
posted @ 2018-09-27 12:05  最爱吃菜  阅读(100)  评论(0编辑  收藏  举报