nginx:
-
高性能、轻量级的web服务软件。
nginx特点:
-
稳定性高 ( 没有apache稳 )
-
系统资源消耗较低 ( 处理http请求的并发能力很高 单台服务器可以处理3-5万)
也追求稳定: 一般在企业中,为了保持服务器稳定,并发量的设置在2万个左右,占用内存2M左右,加上keep-alive状态也就3M左右
nginx的主要功能:
1、静态文件服务 :
nginx可以直接提供静态文件的服务,HTML、JAVA、图片等能够高效地处理并且响应静态文件的请求。
2 、反向代理 :
可一作为反向代理的服务器,将客户端的请求转发给后端多个服务器,可以实现负载均衡,高可用,提高整个集群的性能以及可靠性。
正向代理 : 已知后端服务器,请求只会往固定的服务器发送请求
反向代理的核心 :客户端在请求时,沟通代理服务器,会把请求的流量按照轮询算法,转发到后台不同服务器上,实现负载均衡和高可用
3、处理动态内容 :
nginx处理动态内容很差,php node,js java python,nginx可以代理请求,发送到后端的动态服务处理,动态服务器处理完之后,nginx来把动态请求,响应给客户端。
4、SSLTLS加密 :
HTTPS的加密方式,数字证书验证机制
5、虚拟主机 :
nginx可以在一台服务器上设置多个虚拟主机,同一个服务器上可以有多个域名和站点
6、URL重定向 :
可以实现灵活的url重写和重定向
7、缓存功能 :
nginx自带缓存功能
8、日志功能 :
可以详细的记录请求的信息,包括访问时间,请求路径 ip地址,响应状态,有注意故障排查。
( 系统控制的日志,记录在/ar/log/messages
业务日志分为两种
access.log :记录的谁访问我了,都是访问成功的记录,
error.log :也记录谁访问了我,但是记录的是访问失败的记录 )
nginx的主要应用场景:
-
静态服务
-
反向代理,负载均衡
-
缓存服务
-
动态服务
nginx是如何实现高并发的?
- nginx自身代码的问题: 大量的底层代理进行了优化,同时自带了一个功能模块。epll模块,支持高并发。
- nginx也是一个master进程控制多个work进程,master负责收集和分发请求,work是实际执行者。每一个请求进来,master就会拉起一个work进程处理请求。同时master进程也负责监控worker的状态,worker的数量和pu要一致或者是cpu的2倍。worker处理洁求的过程中,只受内存大小的限制,所以可以处理多个请求,再加上nginx本身就是轻量级的服务,处理洁求时占用的内存本身就很少,所以可以起到大并发处理的能力。二者之间相互依赖,相互补充
常用选项 :
-
nginx -t :检查配置文件是否配查正确。
-
nginx -v :查看nginx的版本号
-
nginx -s :向主进程传输信号,停止、开启、重启、重新、加载
-
nginx -c :设置配置文件的默认路径
nginx常用信号符: 结合kill命令
- kill -USR1 pid号 (nginx服务的pid号) : 日志分割
- kill -s HUP pid号 : 重新加载
- kill -s QUIT pid号 :优雅退出,有人访问时不会结束进程,访问完了,才会结束进程。
- kill -s WINCH pid号 :优雅的结束worker,直到请求完成,才会结束worker进程
- killall -s HUP nginx killall可以跟服务名,也可以用pid号, kill只能跟pid号
修改linux服务器文件的最大打开数量
临时修改 :
ulimit -n 65535
永久修改 :
vim /etc/security/limits.conf
尾行进行添加:
* soft nproc 65535 #最大进程数软连接
* hard nproc 65535 #最大进程数硬链接
* soft nofile 65535 #最大打开文件数软连接
* hard nofile 65535 #最大打开文件数硬链接
注 :65535 是Linux系统最大打开文件数量
nginx.conf文件配置内容注意事项 :
-
全局块 :全局生效,所有模块,所有用户都牛效
-
events块 : 影响nginx服务器和用户的网络连接问题
-
http块:主要模块,配置代理,缓存,虚拟丰机,方向代理,只能品http的请求才可以写http楼块中。
upstream :反向代理指定服务器的命令,只能写在http块中
upstream :七层,基于ip和端口,走http协议,所以只能在http模块中
stream :四层,走的是tcp或者udp流量,不能写在http当中,写在全局配置
-
server块 :包含在http模块当中,不能单独设置
-
location块 :配uri,包含在server当中的,也不能单独设置
porxy pass :反向代理