1.什么是Nginx
Nginx是一个web服务器和方向代理服务器,同于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗为闻名
2.Nginx的优势
1.更快
2.高扩展性,跨平台
3.高可用性:用于反向代理,宕机的概率微乎其微
4.低内存消耗
5.单机支持10万以上的并发连接
6.热部署
7.最自由的BSD许可协议
3.Nginx是如何处理一个HTTP请求的
3.1多进程机制
服务器每当接收到一个客户端请求时,就有服务器的主进程生成一个子进程出来和客户端建立连接进行交互,直到连接断开,子进程结束。
使用进程的好处:
1.各个进程之间相互独立
2.不需要加锁,减少使用锁对性能造成的影响
3.降低编程的难度,降低开发成本
4.独立的进程,互相之间不会受影响,如果一个进程异常退出,其它进程正常工作。
缺点:
操作系统生成的子进程需要进行内存复制等操作,资源和时间上会有一定开销。当有大量请求时,会导致系统性能下降。
3.2异步非阻塞机制
每个进程使用异步非阻塞发方式,可以处理多个客户端请求
什么是非阻塞机制
当某一个工作进程接收到客户端请求以后,调用IO进行处理,如果不能立即得到结果,就去处理其他请求。
什么是异步
客户端再此期间无需等待响应,可以去处理其他事情(此为异步)
当IO返回时,就会通知此工作进程,该进程得到通知,暂时挂起当前处理的事务去响应客户端的请求。
4.列举一些Nginx的特性
1.反向代理;
2.负载均衡;
3.动态二进制升级;
4.嵌入式perl解释器;
5.可用于重新编写URL,具有很好的PCRE支持;
5.列举Nginx和Apache之间的不同点
Nginx | Apache |
---|---|
基于web服务器 | 基于流程的服务器 |
所有请求由一个线程来处理 | 基于流程的服务器 |
避免子进程的概念 | 基于子进程的 |
类似于速度 | 类似于功率 |
内存消耗和连接方面比较好 | 内存消耗和连接方面没有提升 |
负载均衡方面表现比较好 | 当流量达到进程的极限时,Apache将拒绝新的连接 |
对于PHP来说,Nginx更可取,因为他支持PHP | 使用插件,当应用程序基于Python和ruby时,非常有用 |
不支持ibmi和openvms 一样的os | 支持更多的os |
只具有核心功能 | 提供了比Nginx更多的功能 |
性能和可伸缩性不依赖与硬件 | 依赖于CPU和内存等硬件组件 |
6.Nginx服务器上的Master和Worker进程分别是什么?
1.主程序Master process启动后,通过一个for循环来接收和处理外部信号;
2.主进程通过fork()函数产生worker子进程,每个子进程执行一个for循环来实现Nginx服务器对事件的接收和处理。
7.解释代理中的正向代理和反向代理
7.1.什么是代理服务器
代理服务器指的是局域网内的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。
7.2什么是正向代理
客户端发送的请求通过代理服务器将请求发送到互联网上,代理服务器作用在客户端的代理叫做正向代理,正向代理保护的是客户的数据安全。
7.3.什么是反向代理
反向代理的服务器作用在服务器端,他在服务器端接收可客户端的请求,然后将请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。Nginx就是一个反向代理的服务器软件
8.解释Nginx用途
在网上部署动态HTTP内容,使用SCGI、WSGI应用程序服务器,用于脚本FastCGI处理程序,它还可以作为负载均衡器。