2020/01/06 04-Nginx

在这里插入图片描述
nginx可以做:
web服务器
http反向代理服务器
邮件代理服务器
tcp反向代理服务器,类似调度器

lvs只能在传输层调度,无法理解http,tcp协议,lvs不看报文头部,只能识别ip,端口

作为代理服务器,就会从服务器得到的页面缓存下来,这样另外的人访问的时候,就可以直接取缓存,就不用再去互联网上请求了,这个叫正向代理服务器,为局域网提供服务的
在这里插入图片描述
反向代理服务器,把用户请求转发到后端的rs

lvs的nat模型,只是把数据报文从lvs转发出去了,对数据报文(传输层和应用层)没有任何修改,只是把ip地址改了
在这里插入图片描述
如果是代理服务器就不一样了,nginx可以做反向代理服务器,源地址到nginx的时候,替换了,替换成DIP了,(是拆封的数据报文)nginx是替你到后端服务器访问,后端服务器是以为nginx来访问的

反向代理是离着后端服务器更加接近的,把前端的请求代理到后端的RS
在这里插入图片描述
上午lvs的实验是看到的真实的客户端来源在这里插入图片描述
反向代理,来去都要经过nginx服务器
在这里插入图片描述

有时候会混合实验nginx和lvs,双层代理,前面lvs,后面nginx代理RS
在这里插入图片描述
一般公司会用F5硬件调度器,后面用nginx
在这里插入图片描述在这里插入图片描述正向代理离客户端近,反向代理离服务器近,nginx可以根据cookie调度,lvs只能根据ip地址,就显得粗犷
在这里插入图片描述早期的nginx的模块是静态编译,后面的是支持动态编译
不需要停机就可以升级,如果已经有人链接就用旧的服务进程提高服务,当旧的用户访问结束,逐步替换掉旧进程
event-driven 时间驱动,aio异步IO,mmap内存映射,sendfile(讲apache的时候讲过)
nginx是静态服务器,要想当php程序的服务器,做不了,要想运行php,就需要安装对应的软件,fastcgi,而且nginx不支持模块方式,只支持fastcgi,独立进程的方式运行

nginx进程要访问硬盘文件,就需要发指令给内核,内核从磁盘复制到内核空间,再复制到用户空间,这样效率偏低,因为访问文件系统,就需要查索引,文件系统目录,最终确定路径

在这里插入图片描述
为了方便可以在内存离开辟空间,让它和硬盘一一对应,硬盘文件10M ,内存里也是10M,相当于直接指针,这就是mmap
在这里插入图片描述
sendfile
在这里插入图片描述
是内核级别的功能
当客户端发起请求想访问某个资源,
服务器收到请求,正常是需要解封装,最终到达应用程序,Web服务应用程序httpd
这个程序收到请求后,进行请求报文的分析,发现发送的请求是get指令(应该跑到磁盘上去找文件)
httpd是以apache运行的,apache是个用户,用户是无法访问磁盘上的物理设备的,所以需要发送指令到内核去,
内核才有权限去访问磁盘空间,内核收到指令后 ,把磁盘上文件读出,读出来以后,放到内核的buffer缓冲区
缓冲区收到后再把这个复制到httpd的进程内存空间,httpd收到后,会把它封装成响应报文
要从网络中发出去,还得经过内核,内核收到以后,再从物理网卡发送出去
(这其中这个文件,走来走去还是回到内核,就白走了,sendfile就解决了这样的机制)

sendfile就少走了这段路,减少cpu从不敢内核空间切换用户空间的次数,提升性能
在这里插入图片描述在这里插入图片描述在这里插入图片描述也有master进程和worker进程(类似apache有MPM,三种工作模式prefork,event,worker,但是apache
prefork,一个master开若干个子进程,每个子进程去响应请求,
worke和eventr是三级结构,一个master开多个worker,worker里开多个线程,每个线程响应用户请求)
nginx是开若干个worker,但是worker不多,每个worker可以并发支持很多人,1个worker里面没有线程,用的是IO多路复用,可以并发支持多个用户请求,而且不是线程,看不到,可以并发响应上万的请求,在worker里也支持很多模块,每个模块都有特定的功能,
master负责管理这些worker进程,比如开启或者销毁一个worker,此外加载配置文件,平滑升级,都是master来管理的,
除了代理功能,其实还有缓存功能,用户发送请求给nginx,niginx不可能告诉用户自己拿,自己缓存一份,下次用户直接访问,省的去后端服务器上拿数据 了,缓存可以放在内存也可以放在磁盘里,存放在磁盘表现为hash的值
在这里插入图片描述
nginx用的epoll系统调用
在这里插入图片描述
先把之前RS1上的httpd卸载 了在这里插入图片描述
nginx在epel源里在这里插入图片描述
安装nginx
在这里插入图片描述
查看安装的文件列表在这里插入图片描述主配置文件在这里插入图片描述
服务名和nginx主程序
在这里插入图片描述
语法检查的,vim的插件
在这里插入图片描述
nginx是个二进制程序,可以直接执行在这里插入图片描述在这里插入图片描述
可以自己做个网页,h1是字体标题
在这里插入图片描述在这里插入图片描述
可以这么停止在这里插入图片描述所以一般在生成环境测试的时候,都用nginx测试

用什么工具起,就用什么命令停
用systemctl起倒是可以用nginx停止

在这里插入图片描述

一个主进程带两个子进程,master带worker,没有线程
在这里插入图片描述
如果启动使用nginx
那么停止服务就不能用systemctl stop,是停止不了的
在这里插入图片描述在这里插入图片描述
修改配置文件前,做下备份,fastcgi配合PHP,uwsgi是配合python程序
在这里插入图片描述在这里插入图片描述在这里插入图片描述auto,根据当前情况自动判断进程数量,之所以有两个worker,是因为有两个cpu内核
在这里插入图片描述
两颗CPU
在这里插入图片描述修改成4个
在这里插入图片描述在这里插入图片描述
现在就变成4个worker进程了,不要设置太多,一般cpu几个,worker几个就可以了
在这里插入图片描述
aux ,pid进程id。cmd进程名称,psr cpu
在这里插入图片描述
后面就是进程运行的cpu编号,cpu里有缓冲区在这里插入图片描述
123级缓存,每颗cpu自己有自己的缓冲区在这里插入图片描述
在这里插入图片描述
**决定worker进程数量,默认是auto,对应cpu内核个数,过多的worker可能涉及到一个上下文切换的问题,当用户访问nginx服务,如果有一个worker提供服务了,下次再访问的时候,可能访问的是另外一个worker进程,这样就有可能带来一个worker的上下文切换,进程之前可以共享资源但是无法共享数据的,比如session信息,利用IO多路复用,就可以一个worker为多个用户提供服务
**
绑定cpu,可以把一个worker,绑定在一个具体的cpu内核上去,这样就可以提高缓存命中率,因为cpu里面也有缓存,如果你的worker是始终和一颗cpu结合在一起,这样cpu里的缓存就可以让worker不断地去重复使用
跑来跑去,原来你worker的缓存就有可能失效,不绑定的话,由此大大提高性能

在这里插入图片描述worker进程能够打开的文件个数
在这里插入图片描述
默认是空可以调大
在这里插入图片描述

将来希望你的worker进程支持多少个用户并发在这里插入图片描述event实际上是驱动的意思在nginx用的是epoll模型,所以配置文件里有相关的,worker的链接数的限制
在这里插入图片描述
这个也是和打开的文件数相关的
这个1024数字有些偏小了,如果是两个worker就10000左右

在这里插入图片描述
默认用哪种方法,一般用epoll就可以了,没有必要去选一个select,因为nginx优势就在于epoll上面在这里插入图片描述
accept_mutex 接收,必须在event语句块,如果这项是启用的,worker进程间接收新的链接
是轮流(by turn)的,第一个请求第一个worker处理,第二个请求给第二个worker来处理
所有的进程将被通知,
如果设置成off,会通知所有worker进程,但是只由某一个worker进程来提供服务,这就是惊群
惊群,就是来一个请求就都唤醒,但是只是给一个worker来响应,这样就没有必要,影响服务器性能

在这里插入图片描述
用于调试定位的一些选项
在这里插入图片描述
守护进程就是前台执行还是后台执行在这里插入图片描述在这里插入图片描述
http语句块可以配置一个web服务或是多个web服务

root类似documentroot指定网站的家目录路径
nginx搭建网站是以server语句块来搭建的

在这里插入图片描述
可以做虚拟主机,先看下配置文件
在这里插入图片描述写server一定是放在http语句块里的
在这里插入图片描述
定义另外一个httpserver,可以放在server里也可以放在include里
default_server 因为nginx也支持虚拟主机,去访问的时候就是默认的
server_name 网站的名字
root 存放主页的路径

如果40多个主机放在一起,那这个文件就太啰唆了。可以放在.conf里*
在这里插入图片描述
也可以直接创建个文件夹,放在里面,每个网站建立一个conf文件
在这里插入图片描述在这里插入图片描述
可以直接加载服务即可
在这里插入图片描述
在lvs主机上做名词解析
在这里插入图片描述
就可以成功访问
在这里插入图片描述

、这就是一个物理服务器建立多个网站
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述location可以来定义某个位置,针对某个位置来单独地做处理。当访问某个url的时候,把请求到哪个目录下。
可以实现网站的页面和站点存放的路径可以不在同一个路径下
在这里插入图片描述、在asite下建立目录
在这里插入图片描述
网站表面的目录可以和原始网站的不在同一个目录下
在这里插入图片描述
实现效果
在这里插入图片描述
还有缓存
在这里插入图片描述在这里插入图片描述
打开文件的时候也有缓存,浏览器去访问一个网站的时候,这个浏览器的页面,发请求到网站上,http网站进程收到请求以后会从磁盘上把文件读入到内核,内核读入到进程,进程才存放的时候,也可以作为缓存,缓存还可以存放
文件元数据,包括目录结构也可以存放,
但是并没有缓存真实的数据,因为这个缓存是放在内存里的

在这里插入图片描述
最多缓存多少个,写1000个,就最多缓存10000个文件的元数据,超过10000个就只能进行淘汰了LRU算法(最近最少使用算法,在进程管理的时候提到过)
在这里插入图片描述
比如10分钟这个信息没有人访问就把这个信息删除,10分钟访问三次以内才认为是可以缓存的内容
在这里插入图片描述
还有访问控制,限制谁访问在这里插入图片描述
定义/根,允许谁,拒绝谁,匹配了生效,后面的就不管了在这里插入图片描述在这里插入图片描述
对A网站下的某个目录进行控制,8.7的机器不能访问跟
在这里插入图片描述在这里插入图片描述
现在访问就不行了
在这里插入图片描述
放在后面等于白写,上面匹配不看下面在这里插入图片描述在这里插入图片描述
换一下顺序即可
在这里插入图片描述在这里插入图片描述
现在就可以了
在这里插入图片描述在这里插入图片描述在这里插入图片描述
状态页面可以显示nginx的状态信息在这里插入图片描述在这里插入图片描述
对应接收的几个,处理的几个,请求的几个在这里插入图片描述在这里插入图片描述
可以定义日志格式在这里插入图片描述在这里插入图片描述
access log是访问
在这里插入图片描述
在这里插入图片描述
爬虫一直怕,你可以监测哪个IP频繁访问,就可以屏蔽

apache的日志是专门放在/var/log/httpd/access.log
可以用log_format来定义一个日志格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值