CC00065.LinuxNetwork——|Linux&Nginx&反向代理.V01|

一、讲在nginx之前
### --- 同步与异步

~~~		同步与异步的重点在消息通知方式上,也就是调用结果的通知方式不同
~~~		#同步:
~~~		当一个同步调用发出后,调用者要一直等待调用的结果通知后,才能进行后续的执行

~~~		#异步:
~~~		当一个异步调用发出去后,调用者不必一直等待调用的结果的返回,异步调用,
~~~		要想获得结果,
### --- 一般有两种方式:

~~~		主动轮询异步调用的结果
~~~		被调用方通过callback(回调通知)来通知调用方调用结果
~~~		#实例解释:

~~~		同步取快递:小明收到快递将送的的信息,在楼下一直等到快递送达
~~~		异步取快递:小明收到快递将送到的信息,快递到楼下后,小明再下楼去取。
~~~		异步取快递,小明知道快递到达楼下的两种方式
~~~		不停的电话问快递小哥到了没有,即主动轮询
~~~		快递小哥到楼下后,打电话通知小明,然后小明下楼取快递,即回调通知
### --- 阻塞与非阻塞:

~~~		阻塞与非阻塞的重点在于进/线程等待消息时候的行为,也就是在等待消息的时候,
~~~		当前进/线程是挂起转态还是非挂起状态
~~~		#阻塞:
~~~		调用在发出去后,在消息返回之前,当前进/线程会被挂起,知道有消息返回,
~~~		当前进/线程才会被激活

~~~		#非阻塞:
~~~		调用在发出去后,不会阻塞当前进/线程,而会立即返回。

~~~		#实例解释
~~~		阻塞取快递:小明收到快递即将送达的消息后,什么事都不做,一直专门等快递
~~~		非阻塞取快递:小明收到快递即将送达的信息后,等快递的时候,还一边敲代码一遍刷微信
### --- 注释:

~~~		同步与异步,重点在于消息通知的方式,阻塞与非阻塞,重点在于等消息时候的行为。
~~~		所以,就有了下面4中组合方式:
~~~		#同步阻塞:小明收到信息后,啥都不干,等快递
~~~		#同步非阻塞:小明手收到信息后,边刷微博,边等着去快递
~~~		#异步阻塞:小明收到信息后,啥都不干,一直等着快递员通知他取快递
~~~		#异步非阻塞:小明收到信息后,边刷微博,边等快递员通知他取快递。

~~~		大部分程序的I/O模型都是同步阻塞的,单个进程每次只有在一个文件描述符上执行I/O操作,
~~~		每次I/O系统调用都会阻塞,知道完成数据传输,
~~~		传统的服务器采用的就是同步阻塞的多进程模型。
~~~		一个server采用一个进程负责一个request的方式,一个进程负责一个request,
~~~		知道会话结束,进程数就是并发数,而操作系统支持的进程数是优先的,
~~~		且进程数越多,调度的开销也越大,因此无法面对高并发。
~~~		nginx采用了异步非阻塞的方式工作,我们先来了解一下I/O多路复用中的epoll模型
### --- epoll模型:

~~~		当连接I/O时间产生的时候,epoll就会去告诉进程那个连接有I/O事件产生,
~~~		然后进程就去处理这个事件。
~~~		例如:小明楼下有一个收发室,每次有快递到了,门卫就先代收并作标记,
~~~		然后通知小明去取送给小明的快递。
### --- 为什么nginx比其他web服务器并发高(nginx工作原理)

~~~		nginx配置user epool后,以异步非阻塞方式工作。能够轻松处理百万级的并发连接
~~~		#处理过程:

~~~		没进来一个request,会有一个worker进程去处理,但不是全程处理,
~~~		处理到可能发生阻塞的地方,比如向后端服务器转发request,并等待请求返回,
~~~		那么,这个处理的worker不会这么傻等着,它会在发送完请求后,
~~~		注册一个事件:“如果后端服务器返回了,告诉我一声,我在接着干”。
~~~		于是他就休息去了,此时,如果再有新的request进来,
~~~		他就可以很快再按这种方式处理。而一旦后端服务器返回了,
~~~		就会触发这个事件,worker才会来接手,这个request才会接着往下走,
~~~		通过这种快速处理。快速释放请求的方式,达到同样的配置可以处理更大并发量的目的。
二、nginx详解
### --- 概述:

~~~		nginx(engine x)是一个高性能HTTP和反向代理web服务器,
~~~		同时也提供了IMAP/POP3/SMTP服务,
~~~		Nginx是由伊戈尔.塞索耶夫为俄罗斯访问量第二的rambler.ru站点开发的,
~~~		第一个公开版本0.1.0发布于2004年10月4日。
~~~		nginx是一款轻量级的web服务器/方向代理服务器及电子邮件(IMAP/POP3)代理服务器,
~~~		在BSD-like协议下发行,其特点是占有内存少,并发能力强。
三、工作模式:nginx工作模式:nginx和PHP的连接方式
连接过程
### --- nginx有两种工作模式:

~~~		master-worker模式和单进程模式。在master-worker模式下,
~~~		有一个master进程和至少一个worker进程,但进程模式顾名思义只有一个进程。
~~~		这两种模式有各自的特点和适用场景。
### --- master-worker:

~~~		该模式下,nginx启动成功后,会有一个master进程和至少一个的worker进程。
~~~		master进程负责处理系统信号,加载配置,
~~~		管理worker进程(启动,杀死,监控,发送消息/信号灯)
~~~		worker进程负责处理具体的业务逻辑。
~~~		管理worker进程(启动,杀死,监控,发送消息/信号等)
~~~		worker进程负责处理具体的业务逻辑,也就是说,对外部来说,
### --- 真正提供服务的是worker进程,生产环境下一般使用这种模式,因为这种模式有以下优点:

~~~		#稳定性强,只要还有worker进程存活,就能够提供服务,并且一个worker进程挂掉master进程会立即启动一个新的worker进程,保证worker进程数量不变,降低服务终端的概率
~~~		#配合linux的CPU亲和性配置,可以充分利用多核CPU的优势,提升性能
~~~		#处理信号/配置重新加载/升级时可以做到尽可能少或者不中断服务(热重启)
### --- 单进程模式:

~~~		单进程模式下,nginx启动后只有一个进程,nginx的所有工作都由这个进程负责,
~~~		由于只有一个进程,因此可以很方便地利用gdb等工具进行调试,
~~~		该模式不支持nginx的平滑升级功能,任何的信号处理都肯能造成服务中断,
~~~		并且由于是单进程,进程挂掉后,在没有外部监控的情况下,无法重启服务。
~~~		因此,该模式一般只在开发阶段和调试时使用,生产环境下不会使用(了解);
~~~		开发阶段,测试阶段使用,生产环境中不会去使用。
四、配置文件结构
user www www;
#程序运行用户和组
worker_processer auto;										// worker_processer开启的进程的数量,auto:指自动指定数量
#启动进程,指定nginx启动的工作进程数量,建议按照CPU数据来指定,一般等于CPU核心数目
error_log /home/wwwlogs/nginx_error.log cirt;
#全局错误日志
pid 	/usr/local/nginx/logs/nginx.pid;
#主进程PID保存文件
worker_rlimit_nofile 51200;
#文件描述符数量
events
	{
    use epoll;
    #使用epoll模型,对于2.6以上的内核,建议使用epoll模型以提高性能
    worker_connections 51200;								// 一个工作进程能够处理的最大的连接数量。总量:worker_proccsscs乘以worker_connections即可
    #工作进程的最大连接数量
    }
http{
    #网站优化参数
    server {												// 具体的某一网站的配置信息
    	listen 80;											// 监听端口
        root html;											// 网页根目录(/usr/local/nginx/html)
        server_name www.atyanqi.com;						// 服务器域名
        index index.html;									// 默认加载页面
        access_log logs/access.log;							// 访问日志保存位置
        ..............;
        location(.*)\.php${				
        #用正则匹配具体的访问对象;
        }
        location {
        #跳转等规则;
        }
           }
    server {
        #虚拟主机;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值