nginx

目录

nginx

nginx主要功能

nginx的主要应用场景

nginx是如何实现高并发

nginx命令

信号符

yum安装nginx

nginx配置文件

http模块

server块

location模块

总结


nginx

高性能、轻量级的web服务软件
1.稳定性高。(没有apache稳)
2.系统资源消耗低。(处理http请求的并发能力非常高,单台服务器可以处理三万到五万个并发请求)
一般在企业中为了保持服务器稳定,并发量设置在两万左右,占用内存大概2M左右。keep-alive状态,占用3M左右。

nginx主要功能

1.静态文件服务
nginx可以之直接通过静态文件的服务,如HTML、CSS、JAVASCRIPT、显示图片等,能够高效地处理并且响应静态的文件的请求。

2.反向代理
本身自己可以作为反向代理的服务器,将客户端的请求转发给后端多个服务器,可以实现负载均衡、高可用,提高整个集群的性能以及可靠性
反向代理的核心
客户端在请求时,通过代理服务器,会把请求的浏量按照轮询算法转发到不同的服务器,来实现负载均衡和高可用

3.处理动态内容
nginx处理动态内容差,需要转发到PHP、node.js、java、python进行动态服务处理,动态服务器处理后,nginx将动态请求响应给客户端

4.SSL、TLS加密
HTTPS的加密,数字证书验证机制

5.虚拟主机
nginx可以在一台服务器上设置多个虚拟主机,同一个服务器可以有多个域名和站点

6.URL重定向
可以实现灵活的url重写和重定向

7.缓存功能
nginx自带缓存功能。

8.日志功能
可以详细的记录请求的信息,包括访问时间、请求路径、IP地址、响应状态,有助于故障排查

(系统控制的日志,记录在/var/log/messages。业务日志:acess.log记录了访问成功的信息 error.log记录了访问失败的信息)

nginx的主要应用场景

1.静态服务
2.反向代理,负载均衡
3.缓存服务
4.动态服务

nginx是如何实现高并发

1.nginx自身代码,大量的底层代理进行了优化,同时自带了一个功能模块。epoll模块,支持高并发。

2.nginx也是一个master进程控制多个worker进程。master负责收集和分发请求,worker是实际执行者。每一个请求进来,master就会拉起一个worker进程来处理请求,同时master进程也会监控worker的状态,worker的数量和CPU一致后者是CPU的两备。
woker处理请求的过程中,只受内存大小的限制,又因为nginx本身就是轻量级的服务,处理请求是占用的内存本身就少,所以可以起到大并发处理的能力。

二者之间相互依赖相互补充

conf:保存的是所有nginx的配置文件,其中最核心的就是nginx.conf。
html: 保存nginx的web文件,这个目录是默认的目录,可以改,50x.html是nginx默认的错误页面的提示
logs:保存日志文件的位置
sbin:nginx二进制的启动脚本,可以结合不同参数来进行使用

nginx命令

-t 检查配置文件是否配置正确
-v 查看nginx的版本号
-s 向主进程传输信号,停止、开启、重启、重新加载
-c 设置配置文件的默认路径

信号符

信号符结合kill命令 #只要是kill只能跟pid号,killall可以跟服务名也可以跟pid号
kill -USR1 pid号  #日志分割
kill -s HUP pid号  #重新加载
kill -s QUIT pid号 #优雅退出,有用户访问时不会结束进程,访问完了才会结束进程
kill -s WINCH pid号 #优雅的结束worker,直到请求完成才会结束worker进程

yum安装nginx

必需要epel源
yum install -y epel-release
yum install nginx -y

nginx配置文件

worker_processes 
#工作进程也就是worker进程的数量,一般配置成CPU数一致或者2倍
pid
指定pid

worker_connections
#每个进程可以处理的最大连接数

修改linux服务器文件的最大打开数量 面试题
ulimit -n 65535 临时修改,linux只支持打开65535个文件
永久修改
vim  /etc/security/limits.conf
* soft nproc 65535 
* hard nproc 65535 
* soft nofile 65535 
* hard nofile 65535
注意:设置保存后,需要重新ssh连接才会看到配置更改的变化

http模块

只要是针对http请求的配置、代理、缓存、日志、反向代理、虚拟web主机、server块都在http模块中,非http请求的方式不能写在该模块中。因为反向代理分为七层与四层,四层反向代理不能写在http模块


server块

可以配置虚拟主机的相关参数,一个http模块当中可以有多个sever块
listen 监听端口
sever_name 主机名
location模块 匹配的是URI


location模块

root
拼接,root指定的目录和location匹配到URI之间做的一个拼接,这两个路径都要真实存在,且都是目录,在URI目录中要有web文件
alias
匹配指定路径下的web文件
proxy_pass
反向代理配置
注1: root 后路径最后加不加/无所谓,而alias后面路径最后加了/后面必须加/
注2: 只有root标签可以使用重定向,alias不可以设置重定向

总结

全局块,全局生效,所有模块,所有用户都生效
events: 影响nginx服务器和用户的网络连接问题
http:只要模块,配置代理,缓存,虚拟主机,方向代理,只能是http的请求才可以写http模块中。upstream 反向代理指定服务器,配置在https模块中
server块: 包含在http模块当中,不能单独设置
location块:匹配URI,包含在server块当中,不能单独配置
porxy_pass 反向代理

upstream
七层,基于ip和端口,走http协议,所以只能在http模块中
stream:四层,走的是tcp或者udp流量,不能写在http当中,写在全局配置

你可能感兴趣的:(nginx,运维,服务器,网络,linux)