一.Nginx简介
nginx是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,官方测试支持50000个并发连接的响应,并且几乎可以7*24小时不间断运行。
特点:占用内存小、并发能力强。
二.Nginx作用
web服务器常用功能:HTTP代理和反向代理。
正向代理:代理客户端发起请求,比如VPN,由客户端主动选择VPN,由VPN代理客户端去请求服务端。
反向代理:代理服务端接收请求。客户端发起请求,请求通过代理转发至任意服务器上,客户端无感知。
动静分离:网站通过一定规则将资源分为动态资源和静态资源,对静态资源做缓存操作。
负载均衡策略:轮询、加权轮询、Iphash。
轮询:依次转发请求至不同的服务器上。
加权轮询:对某个服务器增加权重,让请求更多发送至该服务器上,保证服务器性能最大化。
IpHash:对客户端请求的ip进行hash操作,根据hash结果将同一个客户端请求分发给同一台服务器处理,解决session不共享问题。
session不共享问题一般选择使用redis持久化,而非IpHash。
redis持久化:redis是基于内存的数据库,断电后数据丢失,持久化就是将数据写入磁盘中。方法是:
(1)RDB(快照):RDB持久性以指定的时间间隔执行数据集的时间点快照。当满足“N秒内数据集至少有M个改动”的条件时,自动保存一次数据集。
(2)AOF(追加写文件):AOF持久性记录服务器接收到的每个写入操作。然后可以在服务器启动时再次回放这些操作,重建原始数据集。使用与Redis协议本身相同的格式记录。
(3)RDB+AOF:在同一实例中组合AOF和RDB。
三.Nginx基本命令
在/nginx/sbin目录下执行以下命令:
./nginx 启动nginx
./nginx -s stop 停止,强制退出所有nginx进程
./nginx -s quit 安全退出,会等进程执行完后再退出
./nginx -s reload 重新加载nginx配置文件,比如修改端口号后需要重新加载
ps aux|grep nginx 查看nginx进程
nginx -t 检查配置文件内容是否正确
三.Nginx配置文件
1.全局配置worker_process:启动nginx进程数量,一般与服务器cpu内核数量保持一致,或者设置为auto,会根据cpu内核数量自动设置worker进程数量。
2.events模块:服务器与客户端之间网络连接配置,如指定每个worker进程同时接收多少个网络连接。
3.http模块:
(1)里面可以包含多个server模块,每一个server块就是一个虚拟主机,也可以将server模块配置放在单独的一个文件中,加载时:include servers/* ,比如放在servers目录下。一个server模块可以配置多个localtion模块,用于对虚拟主机名称之外的字符串进行匹配,对特定请求处理。
(2)反向代理upstream:
http{
upstream test123{
ip_hash; //根据访问ip的hash结果分配,即每个ip的访问地址是固定的
server 127.0.0.1:8000 weight=3; //需要被代理服务器的配置,weight是权重,权重越大被分配请求次数越多
server 127.0.0.1:8001;
}
server{
listen 80; //监听端口
server_name localhost; //
localtion /app{ // 以/app开头的请求
proxy_pass http://test123; //被代理到上面配置的upstream代理服务器中
}
}
}
(3)https配置:http协议默认端口80,https默认端口为443,需要用到ssl签名证书;