Nginx 面试题及详细答案(实战完整版)_第1页
Nginx 面试题及详细答案(实战完整版)_第2页
Nginx 面试题及详细答案(实战完整版)_第3页
Nginx 面试题及详细答案(实战完整版)_第4页
Nginx 面试题及详细答案(实战完整版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Nginx面试题及详细答案(实战完整版)一、基础认知类(初级必问)1、简单说下Nginx是什么?主要用途有哪些?Nginx是一款轻量级、高性能的HTTP和反向代理服务器,同时也支持邮件代理、TCP/UDP代理。它基于事件驱动模型开发,占用系统资源极低,并发能力极强。日常工作中核心用途主要有这几块:静态资源部署:直接托管html、图片、js、css等静态文件,访问速度远快于后端程序;反向代理:转发客户端请求到后端Tomcat、Node、Python等业务服务,隐藏真实后端地址;负载均衡:将客户端请求分发到多台后端服务器,实现集群扩容、单点故障容错;HTTPS证书部署、SSL加密解密;访问限速、IP黑名单、防盗链、请求过滤等安全防护;动静分离:静态资源由Nginx处理,动态请求转发后端服务,提升整体响应速度。2、Nginx和Apache的核心区别?为什么生产环境多用Nginx?两者最核心的差异是运行模型和并发能力:Apache是多进程/多线程模型,每来一个请求就会占用一个进程/线程,高并发下会大量消耗内存、CPU,并发上限低,适合小流量、静态站点;Nginx是事件驱动、异步非阻塞模型,单进程可以处理成千上万个请求,资源占用极低,支持高并发、大流量场景。生产选Nginx的核心原因:并发性能更强、内存占用小、支持热部署(不停机更新配置)、支持负载均衡和反向代理功能更完善,同时稳定性更高,长期运行基本不会出现内存泄漏问题。3、Nginx核心模块有哪些?日常开发和运维接触最多的核心模块:核心模块:进程管理、事件驱动、日志模块、配置解析模块,是Nginx运行的基础;HTTP模块:处理HTTP请求、响应、头部处理、跳转、缓存、限速等;反向代理模块:实现请求转发、后端服务连接管理;负载均衡模块:支持轮询、权重、IP哈希、最少连接等调度策略;SSL模块:负责HTTPS加密、证书校验、协议适配;静态资源模块:处理本地文件访问、目录浏览、文件缓存。二、进程与运行原理(中级高频)4、Nginx的进程模型是什么?各进程作用?Nginx采用主进程+多工作进程的模型,还有一个可选的缓存加载进程:Master主进程:负责读取和解析配置文件、管理Worker进程、处理信号(重启、停止、重载配置)、监控子进程状态,不处理具体业务请求;Worker工作进程:真正处理客户端的HTTP/TCP请求,每个Worker都是单线程、独立运行,进程数量一般配置为CPU核心数;Cacheloader进程:启动时加载磁盘缓存到内存,只启动时运行一次;Cachemanager进程:定期清理过期缓存、控制缓存大小,常驻运行。优势:Worker进程相互独立,单个Worker异常崩溃不会影响整体服务,Master会自动重启异常子进程。5、Worker进程数为什么建议和CPU核心数一致?能不能多配?NginxWorker是单线程模型,单个Worker同一时间只能利用一个CPU核心。配置和CPU核心数一致,可以最大化利用多核性能,避免进程切换带来的性能损耗。可以多配,但不推荐。多配会造成进程抢占CPU资源,频繁上下文切换,反而降低并发处理效率、增加CPU开销。日常生产默认worker_processesauto;自动适配核心数即可。6、Nginx热部署、重载配置的原理?执行nginx-sreload不会中断业务请求,核心流程:Master进程读取新配置文件,校验配置语法是否合法;配置无误后,Master启动一批新的Worker进程,新进程按照新配置处理新请求;Master向旧Worker进程发送信号,旧进程停止接收新请求,继续处理已连接的旧请求;旧请求全部处理完成后,旧Worker进程自动退出。整个过程全程不停机,实现配置平滑更新。三、反向代理与负载均衡(核心必考)7、正向代理和反向代理的区别?核心区别:代理的对象不同正向代理:代理客户端,替客户端访问外网服务。客户端知道代理服务器,目标服务不知道真实客户端,典型场景:翻墙、公司内网上网代理;反向代理:代理服务端,替后端业务服务接收客户端请求。客户端无感知,只访问Nginx,不知道后端真实服务地址。生产环境Nginx几乎全部使用反向代理,用来保护后端服务、统一入口、做流量管控。8、Nginx负载均衡有哪些策略?各自适用场景?Nginx内置4种基础负载均衡策略,还有常用扩展策略:轮询(默认):请求按顺序依次分发到每台后端服务器。适用:所有后端服务器配置、性能一致,业务无状态;权重weight:权重越高,分配的请求越多。适用:后端服务器配置不均,高配机器多承担流量;IP哈希ip_hash:同一客户端IP固定访问同一台后端机器。适用:需要会话保持的业务,避免用户登录态丢失;最少连接least_conn:请求分发到当前连接数最少的服务器。适用:后端服务器性能差异大、请求处理耗时不一致的场景;URL哈希、fair(第三方):按请求URL哈希分发,适合静态资源缓存、接口资源固定的场景。9、ip_hash有什么缺点?如何解决会话保持问题?ip_hash缺点:如果后端某台服务器宕机,重启后哈希映射改变,用户会话会失效;部分局域网用户出口IP一致,会导致流量集中打到单台机器,负载不均;无法精准适配业务会话需求。生产更推荐的会话保持方案:Redis统一存储Session、JWT令牌无状态认证,彻底摆脱服务器绑定问题,比ip_hash更稳定、扩展性更强。10、Nginx反向代理常用核心参数有哪些?日常配置高频参数,也是面试常问:proxy_pass:指定后端代理的服务地址;proxy_set_headerHost$host:向后端传递真实域名;proxy_set_headerX-Real-IP$remote_addr:传递客户端真实IP;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for:传递经过的代理链路IP;proxy_connect_timeout:连接后端超时时间;proxy_read_timeout:读取后端响应超时时间;proxy_send_timeout:向后端发送请求超时时间。四、动静分离与缓存(中级实战)11、什么是动静分离?为什么要做动静分离?动静分离就是将网站的静态资源和动态请求分开处理:静态资源:图片、视频、js、css、html等,直接由Nginx本地返回,不经过后端业务服务;动态请求:接口查询、表单提交、业务逻辑处理等,转发给后端Java/Go服务处理。核心优势:减轻后端服务器压力,静态资源响应速度极快,提升用户访问体验,同时方便对静态资源做缓存、压缩、防盗链优化。12、Nginx缓存的原理是什么?常用缓存参数?Nginx缓存是将后端返回的静态、准静态资源缓存到本地磁盘,后续相同请求直接读取缓存,无需请求后端服务。核心参数:proxy_cache_path:定义缓存存放路径、内存区域、缓存过期时间、最大缓存大小;proxy_cache:开启缓存并绑定缓存区域;proxy_cache_valid:对不同状态码设置缓存时长;proxy_cache_key:自定义缓存key,默认按请求URL缓存。适用场景:首页静态页面、商品图片、静态接口数据,不适合实时性极高的支付、订单接口。五、性能优化与参数调优(高级面试)13、Nginx高并发优化核心参数有哪些?整理生产环境最常用的核心调优参数:worker_processesauto:自动匹配CPU核心数;worker_connections10240:单个Worker最大连接数,调高支持更高并发;multi_accepton:一次性接收所有新连接,提升连接处理效率;epoll事件模型:Linux下默认最优事件模型,支持高并发;keepalive_timeout:长连接超时时间,减少频繁建立连接的开销;gzip压缩:开启静态资源压缩,减少传输流量,提升访问速度;关闭不必要的日志、关闭目录浏览,减少资源消耗。14、Nginx长连接和短连接的区别?如何配置?短连接:客户端请求完成后立即断开连接,每次请求都要重新握手,适合低频请求,频繁访问会浪费握手资源。长连接:一次握手后,连接持续一段时间,期间可多次传输数据,减少TCP握手开销,提升高并发访问效率。Nginx通过keepalive_timeout配置长连接超时,同时后端代理需要配置proxy_http_version1.1和proxy_set_headerConnection""保证后端长连接生效。15、开启GZIP压缩的作用和注意事项?作用:对文本类静态资源进行压缩,大幅减小文件传输大小,降低带宽消耗,加快页面加载速度。注意事项:图片、视频、压缩包本身已经压缩过,无需开启GZIP,避免浪费CPU;配置压缩阈值,过小的文件不压缩,避免压缩耗时大于传输耗时;只压缩文本类资源:html、js、css、json、txt。六、故障排查与实战问题(面试压轴)16、网站出现502错误是什么原因?怎么排查?502是Nginx无法获取后端服务器的有效响应,核心原因:后端服务宕机、未启动、端口监听异常;后端服务端口被防火墙、安全组拦截;proxy_pass地址配置错误;后端服务并发打满、线程阻塞,无法响应新请求。排查步骤:先telnet测试后端端口通不通、查看后端服务日志、检查Nginx错误日志、确认服务资源使用率。17、网站出现504超时错误如何解决?504是网关超时,Nginx等待后端服务响应超时,不是连接失败。解决方式:调大Nginx超时参数:proxy_read_timeout、proxy_connect_timeout;排查后端服务是否接口耗时过长、数据库慢查询、线程卡死;优化后端业务逻辑,减少接口响应时间。18、403权限不足的常见原因?站点目录、文件权限不足,Nginx运行用户无读取权限;配置了禁止访问的IP、防盗链规则拦截;目录不存在,且未配置默认首页;Nginx开启了SELinux,限制文件访问权限。19、如何解决Nginx跨域问题?前端跨域是浏览器同源策略限制,可直接在Nginx配置响应头解决,无需改后端代码。通过添加Access-Control-*系列响应头,允许指定域名跨域请求,同时处理OPTIONS预检请求直接返回200,避免预检请求报错。七、高频场景问答(面试加分项)20、如何配置Nginx防盗链?通过校验请求的Referer头部实现,只允许自己的域名访问静态资源,拦截第三方网站盗用资源。配置合法域名白名单,禁止空Referer和非法域名访问图片、视频等静态资源,防止流量被盗用。21、Nginx如何实现限流?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论