Nginx基础
什么是Ngnix
- Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,其特点是占有内存少,并发能力强
- 主要用来反向代理
- 通过配置文件可以实现负载均衡和集群
- 静态资源虚拟化
![image]()
![image]()
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 - 日志切分
![image]()
![image]()
添加一个定时任务处理
![image]()
常用定时任务命令:
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
![image]()
- TUN
![image]()
- DR
![image]()
配置LVS-DR模式ipvsadm











先安装ipvsadm: yum install ipvsadm




LVS负载均衡算法










浙公网安备 33010602011771号