版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Nginx面试题及详细真实答案(实操版)一、基础认知类(初级必问)1、简单说下Nginx是什么?核心用途有哪些?参考答案:Nginx是一款轻量级、高性能的HTTP和反向代理服务器,也能做TCP/UDP代理,基于事件驱动模型开发,占用资源低、并发能力强、稳定性好。日常工作中主要用在这几个场景:静态资源托管(图片、js、css、静态页面)反向代理、请求转发,隐藏后端真实服务地址负载均衡,分发流量到多台后端服务HTTPS证书配置、SSL解密请求缓存、限流、防盗链、跨域处理动静分离,减轻后端业务服务器压力2、Nginx和Apache的核心区别?为什么线上大多用Nginx?参考答案:最核心的差异是并发模型:Apache是多进程/多线程模型,每来一个请求就占用一个进程/线程,高并发下资源占用高,容易卡顿。Nginx是事件驱动(epoll)模型,单进程可以处理大量请求,不阻塞,内存占用极低,支持十万级并发。线上优先用Nginx主要因为:并发能力强、部署简单、配置灵活、宕机风险低、支持热部署,适合高流量网站。Apache现在基本只用于老旧项目。3、Nginx常用核心模块有哪些?参考答案:工作中高频用到的模块:ngx_http_core_module:核心模块,处理HTTP基础请求ngx_http_proxy_module:反向代理核心模块ngx_http_upstream_module:负载均衡模块ngx_http_rewrite_module:URL重写、跳转ngx_http_ssl_module:HTTPS/SSL加密ngx_http_limit_req_module:请求限流ngx_http_gzip_module:资源压缩ngx_http_cache_module:文件缓存4、Nginx常用命令有哪些?参考答案:nginx-sstop:快速停止(强制断开连接)nginx-squit:优雅停止(处理完当前请求再关闭)nginx-sreload:平滑重启(不中断业务,加载新配置)nginx-t:检查配置文件是否报错(上线必执行)nginx-V:查看编译参数、安装模块nginx-sreopen:重新打开日志文件(日志切割用)二、配置与核心原理(中级高频)5、Nginx配置文件结构由哪几部分组成?参考答案:整体分为5个块,层级从上到下:全局块:配置全局参数,比如worker进程数、运行用户、日志路径events块:配置连接模型,比如单进程最大连接数、epoll开启http块:HTTP服务全局配置,包含超时、压缩、文件类型、缓存等server块:虚拟主机配置,绑定域名、端口location块:匹配具体URI,做代理、跳转、静态配置6、worker_processes一般配置多少?为什么?参考答案:生产环境一般配置为CPU核心数或者CPU核心数*2,主流直接写auto让Nginx自动识别。原因:Nginx是主从架构,master进程负责管理,worker进程负责处理实际请求。一个CPU核心绑定一个worker进程,能最大化利用CPU性能,配置多了会造成进程切换浪费资源,配置少了跑不满性能。7、worker_connections作用是什么?最大并发怎么算?参考答案:worker_connections是单个worker进程最大支持的连接数,默认1024。最大并发计算公式:worker_processes*worker_connections/2除以2是因为一次HTTP请求会占用1个上行连接、1个下行连接。如果是单纯代理场景,公式通用。8、location匹配规则优先级?参考答案:优先级从高到低,从上到下匹配,命中即终止:=精确匹配(最高优先级)^~前缀匹配,匹配成功不再走正则~区分大小写正则匹配~*不区分大小写正则匹配普通前缀匹配(无符号)/默认匹配(最低优先级)9、Nginx反向代理和正向代理的区别?参考答案:正向代理:代理客户端,替客户端访问外网,服务端不知道真实客户端是谁,比如翻墙代理、公司内网统一上网。反向代理:代理服务端,用户访问Nginx,Nginx转发请求到后端业务服务,用户无感知后端真实地址。主要用来隐藏后端、做负载、限流、防护。工作中我们99%场景用的都是反向代理。三、负载均衡专项(面试高频)10、Nginx负载均衡有哪些策略?各自适用场景?参考答案:一共5种常用策略:默认轮询:请求依次分发,适合后端服务器性能一致的场景weight权重轮询:权重越高分到的请求越多,适合后端机器配置不一样的场景(高配机器多扛流量)ip_hash:根据客户端IP哈希分配,保证同一用户始终访问同一台后端,解决session不共享问题least_conn最少连接:请求分发到当前连接数最少的机器,适合请求处理耗时差异大的场景url_hash:根据URL哈希分发,相同资源固定访问一台机器,适合静态资源缓存场景11、ip_hash有什么缺点?怎么解决?参考答案:缺点:后端某台机器宕机后,用户重新连接会重新分配节点,可能丢失session容易出现流量分配不均,部分节点流量过高不支持IPv6适配,部分代理场景IP穿透有问题生产最优解决方案:不用ip_hash,改用Redis统一共享session,彻底解决会话一致性问题。12、Nginx负载均衡健康检查怎么做?参考答案:分原生和第三方模块:原生被动健康检查:通过max_fails、fail_timeout配置,后端连续失败多少次,就暂时剔除节点,超时后重新尝试连接。优点开箱即用,缺点是只能等请求失败才检测。主动健康检查:需要安装ngx_http_upstream_check_module第三方模块,Nginx会定时主动向后端发请求探测,异常直接剔除,恢复后自动拉回集群,生产高可用项目基本都用这个。四、Rewrite与HTTPS实战13、Rewrite常用flag区别?参考答案:last:停止当前location匹配,重新走一遍全局匹配流程(内部跳转,地址栏不变)break:停止匹配,直接执行当前location,不再重新匹配redirect:302临时重定向,地址栏变化,搜索引擎不收录permanent:301永久重定向,地址栏变化,搜索引擎收录权重实操口诀:内部改写用last/break,对外跳转用301/302。14、301和302重定向区别?生产怎么选?参考答案:301永久重定向:永久跳转,浏览器会缓存跳转规则,适合域名永久迁移、http强制转https302临时重定向:临时跳转,不缓存,适合活动临时跳转、故障临时切换页面注意:301缓存太强,改配置后浏览器不刷新容易出问题,调试阶段优先用302。15、HTTP强制跳转HTTPS怎么做?参考答案:两种常用方式,生产最常用rewrite方式:方式一(rewrite):监听80端口,所有请求永久跳转到HTTPS方式二(return301):更简洁,性能更好,现在主流推荐核心逻辑:80端口只做跳转,443端口承载正常业务请求。五、限流、缓存、防盗链16、Nginx怎么做限流?两种限流方式区别?参考答案:两种核心限流:limit_req速率限流:基于漏桶算法,限制每秒请求数,防突发高频刷接口、CC攻击,适合接口限流limit_conn连接限流:限制单IP最大并发连接数,防单IP大量占用连接,适合抗攻击生产一般两个同时配置,兼顾请求频率和并发连接。17、Nginx缓存原理?适用场景?参考答案:Nginx会把后端返回的静态资源、接口数据缓存到本地磁盘,下次相同请求直接由Nginx返回数据,不用再请求后端服务,大幅降低后端压力。适用场景:静态资源、不常变动的接口、首页页面、图片视频资源。不适用:实时性极高的接口、用户个性化动态数据、支付登录类接口。18、Nginx防盗链怎么做?原理是什么?参考答案:通过valid_referers配置实现。原理:浏览器请求资源时会携带referer头部,记录请求来源域名。Nginx校验referer,只允许自己的域名、白名单域名访问资源,非法来源直接返回403,防止别人盗用我们的图片、视频资源。缺点:referer可以伪造,高安全场景会搭配token鉴权使用。六、常见报错与故障排查(实战必考)19、常见403、404、502、504报错原因?参考答案:404:请求的文件/接口路径不存在,路径写错、资源删除、匹配规则错误403:权限不足,文件权限、目录权限、防盗链拦截、IP黑名单、目录无index文件502BadGateway:Nginx连不上后端服务,后端服务挂了、端口未启动、端口不通、防火墙拦截、后端进程卡死504GatewayTimeout:后端服务正常,但处理请求太慢,超过Nginx超时时间,属于超时问题不是服务挂了20、线上出现504怎么排查?参考答案:按我平时排查顺序:先看Nginx错误日志,确认是后端响应超时检查后端服务是否卡顿、CPU爆满、GC频繁、数据库慢查询适当调整Nginxproxy_connect_timeout、proxy_read_timeout超时时间排查是否是大接口、大文件导出导致耗时过长优化后端接口,拆分慢接口、优化SQL,从根源解决21、Nginx平滑重启会不会丢请求?原理是什么?参考答案:正常情况下不会丢请求。原理:执行reload后,master进程会启动新的worker进程加载新配置,同时保留旧的worker进程继续处理已接入的旧请求。旧请求处理完毕后,旧worker进程自动退出,新请求全部由新worker进程处理,全程不中断业务。只有极端场景:机器负载极高、请求堆积严重时,可能出现少量超时。七、性能优化(高阶面试)22、线上Nginx常规优化方案有哪些?参考答案:我线上落地的优化点:优化进程配置:worker数匹配CPU核心,调高单进程连接数开启gzip压缩,压缩静态资源,减少传输体积开启静态资源缓存,设置合理过期时间配置超时时间,避免无效连接占用资源开启长连接,减少握手开销配置限流、防盗链,抗CC攻击日志切割,避免单日志文件过大拖慢服务关闭不必要的模块、隐藏Nginx版本号,减少漏洞暴露23、怎么隐藏Nginx版本号?为什么要隐藏?参考答案:配置server_tokensoff;即可隐藏版本号。目的:防止黑客通过版本号查询对应版本漏洞,针对性攻击,属于基础安全防护手段。24、Nginx长连接和短连接区别?生产怎么配置?参考答案:短连接:每次请求都新建TCP连接,请求完立即断开,频繁握手消耗资源,适合低频请求长连接:一次连接多次请求,减少握手耗时,提升响应速度,适合高并发网站生产会开启Nginx与客户端、Nginx与后端的双层长连接,同时配置合理超时时间,避免死连接占用资源。八、架构场景题(终面常问)25、简单说下Nginx动静分离架构?好处是什么?参考答案:动静分离就是:Nginx直接处理静态资源请求,动态接口请求转发给后端Tomcat/Java服务。好处:静态资源由高性能Nginx处理,速度更快大幅减少后端业务服务的请求压力便于单独对静态资源做缓存、压缩、CDN加速业务宕机不影响静态页面正常展示26、单机Nginx瓶颈怎么解决?参考答
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游行业景区营销推广经理游客体验KPI考核表
- 健身教练业务成果及学员满意度绩效考评表
- 物流业货车司机绩效衡量表
- 产品开发阶段质量控制方案
- 江西省妇幼保健院第三方医辅人员招聘考试参考题库及答案解析
- 2026年长春建工集团人员招聘考试模拟试题及答案
- 艺术作品完成度评估表
- 2026四川德阳市旌阳区城镇公益性岗位招聘20人考试参考题库及答案解析
- 四川天府检验检测集团有限公司2026年第二批员工公开招聘考试备考题库及答案解析
- 活动策划岗位工作成效评估表
- 食品加工厂生产线班长工作效率绩效评定表
- 建筑施工事故案例警示教育考试题库
- 2026中信银行成都分行社会招聘(9月)考试备考试题及答案解析
- 2026年中国高频变压器行业现状分析及赢利性研究预测报告
- 2026年工勤考试收银审核员(高级技师)考试题及答案
- 门诊以及手术室外麻醉
- 住院患者中途离院风险管控专家共识
- 2026年执业医师资格考试中医骨伤科专项训练题库
- 2026秋部编版六年级语文上册第4单元语文园地四教学课件
- 飞轮电化学混合独立储能电站项目安全生产应急管理预案
- 2026交管12123学法减分题库500题(含标准答案+详细解析)
评论
0/150
提交评论