Nginx篇
简述什么是Nginx,他有什么优势和功能?
Nginx一款免费的,自由的,开源的,高性能Http服务器和反向代理服务器;Nginx以其高性能,稳定性,丰富的功能,简单配置和低资源消耗而闻名。也可以作反向代理服务器,负载均衡器和Http缓存
优点:
1.更快: 表现在两方面,一方面,正常情况下,单次请求会得到更快的响应;另一方面在高峰期,Nginx可以比其他web服务器更快的响应请求。
2.高扩展,跨平台 Nginx的设计极具扩展性,它安全是由不同功能,不同层次,不同类型且耦合度低的模块组成。因此对某一个模块修复Bug或进行升级时,可以专注模块自身,无需在意其他。
3.高可靠:用于反向代理,宕机的概率微乎其微 来自于核心框架代码的优秀设计,模设计的简单性。
4.低内存消耗:一般情况下,10000个非活跃的http keep-Aive连接在Nginx中仅消耗2.5MB内存,这是Nginx支持高并发的基础
5.单机支持10万以上的并发连接
6.热部署 不间断服务的情况下,升级Nginx的可执行文件 当然不停止服务就可以更新配置,更换日志等功能。
7.最自由的BSD许可协议 不止允许用户免费使用Nginx,它还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布。
选择Nginx的核心还是高并发的同时保持高效的服务
Nginx如何处理一个http请求?
它结合多进程机制和异步机制,异步机制使用的是异步非堵塞
1.多进程机制
服务器每当收到一个客户端时,就有服务主进程生成一个子进程出来和客户端交互直到连接断开,该子进程结束。
使用进程的好处是各进程之间相互独立,不需要加锁,减少使用锁对性能造成影响,同时降低编程复杂度,降低开发成本。
缺点:操作系统生成一个子进程需要内存复制操作,在资源时间上会有一定的开销。当有大量请求时,会导致系统性能下降。
2.异步非堵塞机制
每个工作进程使用异步非堵塞方式,可以处理多个客户端请求
当某个工作进程收到客户端请求后,调用io进行处理,如果不能立即得到结果,就去处理其他请求(即为非堵塞);而客户端在此期间也无需等待响应,可以去处理其他事情(异步)
当io返回时,通知工作进程;进程得到通知,暂时挂起当前处理事务去响应客户端请求
3.列举一些Nginx特性
1.反向代理/L7负载均衡器
2.嵌入式Perl解释器
3.动态二进制升级
4.可以用重新编写URL,具有非常好的PCRE支持
Nginx服务器上的Master和Worker进程分别是什么?
主程序Master process启动后,通过一个for循环来接收和处理外部信号
主进程通过fork()函数产生worker子进程,每个子进程执行一个for循环来实现Nginx服务器对事件的接收和处理。
请解释代理中的正向代理和反向代理
代理服务器一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。我们客户端进行FQ时,我们使用的是正向代理,通过正向代理的方式,我们在客户端运行一个软件,将我们的HTTP请求分发给不同的服务器端,实现请求的分发。
反向代理作用在服务端,他在服务端接收客户端的请求然后将请求具体分发给服务器进行处理,然后再将服务器的相应结果返给客户端。
客户端必须设置正向代理服务器,前提是知道正向代理服务器的IP地址,还有代理程序的端口。反向代理相反,对于客户端就像原始服务器,并且客户端不需要进行任何的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着方向代理将判断向何处转交请求,并将内容返回给客户端。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix