Nginx基础
什么是Ngnix
- Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,其特点是占有内存少,并发能力强
- 主要用来反向代理
- 通过配置文件可以实现负载均衡和集群
- 静态资源虚拟化
nginx.conf结构模型
Nginx进程模型
通过ps -ef|grep nginx查看主进程和工作进程,在nginx.conf中设置,进行设置worker_processes,一般来说CPU有几个就设置几个工作进程或者N-1个。
Nginx处理Web请求机制解析
传统服务器同步阻塞(bio)
Nginx是异步非阻塞的多路复用器,在nginx.conf中设置use epoll(默认配置),worker_connections可以设置每个worker的最大连接数。
日志切分
设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了。
- 参数意义
$remote_addr 客户端ip
$remote_user 远程客户端用户名,一般为:’-’
$time_local 时间和时区
$request 请求的url以及method
$status 响应状态码
$body_bytes_send 响应客户端内容字节数
$http_referer 记录用户从哪个链接跳转过来的
$http_user_agent 用户所使用的代理,一般来时都是浏览器
$http_x_forwarded_for 通过代理服务器来记录客户端的ip
- 日志切分
添加一个定时任务处理
常用定时任务命令:
service crond start//启动服务
service crond stop//关闭服务
service crond restart//重启服务
service crond reload//重新载入配置
crontab -e // 编辑任务
crontab -l // 查看任务列表
Nginx跨域问题
在server中添加配置、
Nginx中配置静态资源防盗链
在server中添加配置
Nginx的模块化设计解析
OSI网络模型
Nginx的集群负载均衡器
负载均衡-默认轮询
负载均衡-加权轮询,在后面增加weight = 2
upstream tomcats {
server 192.168.1.173:8080 weight = 2;
server 192.168.1.174:8080 weight = 1;
server 192.168.1.175:8080 weight = 3;
}
upstream参数
- max_conns
限制每台server的连接数,用于保护避免过载,可以起到限流作用
upstream tomcats {
server 192.168.1.173:8080 max_conns=2;
server 192.168.1.174:8080 max_conns=2;
server 192.168.1.175:8080 max_conns=2;
}
- slow_start
缓慢的启动,慢慢加入到集群,会在配置的时间内将权重慢慢升级到配置的权重值,必须要使用在集群里面,必须要和权重一起使用
upstream tomcats {
server 192.168.1.173:8080 max_conns=2 slow_start=60s;
server 192.168.1.174:8080 max_conns=2;
server 192.168.1.175:8080 max_conns=2;
}
注意:
1、商业版要收费
2、该参数不能使用在hash和random load balancing中
3、如果在upstream中只有一台server,则该参数失效。
3. down
一种状态,标识服务器节点不可用
upstream tomcats {
server 192.168.1.173:8080 down;
server 192.168.1.174:8080 weight = 1;
server 192.168.1.175:8080 weight = 3;
}
- backup
表明服务器是一台备用机(其他服务挂掉之后,才会被访问)
upstream tomcats {
server 192.168.1.173:8080 weight = 2;
server 192.168.1.174:8080 weight = 1;
server 192.168.1.175:8080 weight = 3;
}
注意
backup参数不能使用在hash和random load balancing中
5. max_fails
表示失败几次,则标识server已宕机,踢出上游服务
upstream tomcats {
server 192.168.1.173:8080 weight = 2;
server 192.168.1.174:8080 weight = 1;
server 192.168.1.175:8080 weight = 3;
}
- fail_tiemout
表示失败的重试时间
upstream tomcats {
server 192.168.1.173:8080 max_fails=2 fail_timeout=15s;
server 192.168.1.174:8080 weight = 1;
server 192.168.1.175:8080 weight = 3;
}
Keepalived提高吞吐量
keepalived: 设置长连接处理的数量
proxy_http_version:设置长连接http版本为1.1
proxy_set_header:清除connection header 信息
负载均衡之ip_hash
upstream tomcats {
ip_hash;
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
hash原理根据服务器数量进行取模分配
其中ip_hash底层是使用请求ip通过“.”分割后取前三个数,如图:
注意:若服务器发生问题需要临时移除,不能在集群中直接删除服务器,必须使用“down”,避免hash算法发生更改。
一致性hash算法
负载均衡之url_hash和least_conn
使用Nginx配置SSL证书
Keepalived双机主备原理
VRRP:虚拟路由冗余协议
配置Keepalived-主
把Keepalived注册为系统服务
在解压文件目录下cd Keepalived/etc
cp init.d/Keepalived etc/init.d
cp sysconfig/Keepalived etc/sysconfig
systemctl daemon-reload
systemctl start Keepalived.service
systemctl stop Keepalived.service
systemctl restart Keepalived.service
配置Keepalived-备
Keepalived配置Nginx自动重启
Keepalived双主热备
双机主备会造成资源浪费,所以设置成双主热备,互为主备。
为何使用LVS+Nginx
LVS三种模式
- NAT
- TUN
- DR
配置LVS-DR模式ipvsadm
先安装ipvsadm: yum install ipvsadm
LVS负载均衡算法