nginx面试题
1 nginx是什么?请介绍一下
2 你在开发工作中,哪里用到了nginx,怎么使用的?
3 你的项目中为什么一定要用nginx
4 说一说什么是正向代理,什么是反向代理
5 nginx服务器和apache服务器有什么区别?
轻量级:同样起web 服务,nginx 比apache 占用更少的内存及资源;
抗并发:nginx处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能;
模块化:nginx编写模块相对简单;
IO事件模型:apache是同步多进程模型,一个连接对应一个进程,阻塞;nginx是异步的,多进程单线程,异步非阻塞,多个连接(万级别)可以对应一个进程。
功能丰富:Nginx提供负载均衡,可以做反向代理,前端服务器
6 介绍一下nginx工作原理
7 nginx负载均衡如何配置且说名如何配置负载策略
8 你开发的项目中nginx用的是单机的还是集群?集群如何搭建?工作原理是什么?
9 为什么Nginx性能这么高?
因为他的事件处理机制:异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决
10 nginx是单线程还是多线程?
nginx 采用的是多进程(单线程) + io多路复用(epoll)模型 实现高并发。
11 Nginx的优缺点?
优点:
占内存小,可实现高并发连接,处理响应快
可实现http服务器、虚拟主机、方向代理、负载均衡
Nginx配置简单
可以不暴露正式的服务器IP地址
缺点:
动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋.
12 Nginx应用场景?
http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。
13 nginx是如何实现高并发的?
简单来讲,就是: 异步,非阻塞,使用了epoll和大量的底层代码优化
nginx采用一个master进程,多个woker进程的模式。
1. master进程主要负责收集、分发请求。当一个请求过来时,master拉起一个worker进程负责处理这个请求。
2. master进程也要负责监控woker的状态,保证高可靠性
3. woker进程一般设置为跟cpu核心数一致。nginx的woker进程跟apache不一样。apche的进程在同一时间只能处理一个请求,所以它会开很多个进程,几百甚至几千个。而nginx的woker进程在同一时间可以处理额请求数只受内存限制,因此可以处理多个请求。
14 nginx的四大功能是什么?
正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
反向代理:我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
负载均衡:单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
动静分离: 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力
15 为什么要做动静分离?
Nginx是当下最热的Web容器,网站优化的重要点在于静态化网站,网站静态化的关键点则是是动静分离,动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们则根据静态资源的特点将其做缓存操作。
让静态的资源只走静态资源服务器,动态的走动态的服务器
Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。
对于静态资源比如图片,js,css等文件,我们则在反向代理服务器nginx中进行缓存。这样浏览器在请求一个静态资源时,代理服务器nginx就可以直接处理,无需将请求转发给后端服务器tomcat。
若用户请求的动态文件,比如servlet,jsp则转发给Tomcat服务器处理,从而实现动静分离。这也是反向代理服务器的一个重要的作用。
16 Nginx怎么做的动静分离?
只需要指定路径对应的目录。location/可以使用正则表达式匹配。并指定对应的硬盘中的目录。
17 Nginx 常用命令有哪些?
启动 nginx 。
停止 nginx -s stop 或 nginx -s quit 。
重启 nginx -s reload 或 service nginx reload 。
重载指定配置文件 .nginx -c /usr/local/nginx/conf/nginx.conf 。
查看 nginx 版本 nginx -v 。
18 什么是C10K问题? 如何解决?
所谓c10k问题,指的是: 服务器如何支持10k个并发连接,也就是concurrent 10000 connection(这也是c10k这个名字的由来), C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。
解决方案 :
为每个连接分配一个独立的线程/进程。
同一个线程/进程同时处理多个连接(IO多路复用)。
19 简述nginx集群工作原理
20.Log4J日志级别有哪些,一般使用哪个级别?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构