Nginx 实战面试题(企业真实场景版)_第1页
Nginx 实战面试题(企业真实场景版)_第2页
Nginx 实战面试题(企业真实场景版)_第3页
Nginx 实战面试题(企业真实场景版)_第4页
Nginx 实战面试题(企业真实场景版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

Nginx实战面试题(企业真实场景版)一、基础认知类(入门必问)1、简单说下Nginx的核心特点,以及和Apache的核心区别?Nginx是一款轻量级、高性能的Web服务器和反向代理服务器,核心优势是高并发、低资源占用、稳定性强,支持事件驱动模型。和Apache核心区别:架构:Nginx基于事件驱动、异步非阻塞多进程模型;Apache多为同步阻塞多进程/多线程模型,高并发下资源消耗大。并发能力:Nginx单机可支撑数万并发连接;Apache并发上限较低,高并发场景容易卡顿。资源占用:Nginx内存、CPU占用极低;Apache每个连接独立进程,资源开销大。功能侧重:Nginx更擅长反向代理、负载均衡、静态资源处理;Apache动态脚本兼容性更好、模块生态更成熟。2、Nginx常用的应用场景有哪些?静态资源服务器:托管图片、JS、CSS、静态页面,响应速度快。反向代理服务器:转发后端Tomcat、Node、PHP等服务请求,隐藏后端真实地址。负载均衡:分发请求到多台后端服务器,实现集群高可用。HTTPS证书部署、SSL加密解密。动静分离:静态资源直接由Nginx处理,动态请求转发后端服务。限流、防盗链、IP黑白名单、访问权限控制。3、Nginx核心进程模型了解吗?Master和Worker进程的作用?Nginx采用一个Master主进程+多个Worker工作进程的模型,还有缓存加载进程、日志进程。Master进程:负责读取、校验配置文件,管理所有Worker进程,执行重启、停止、平滑升级等操作,不处理用户请求。Worker进程:实际处理客户端的所有请求,每个Worker独立异步处理连接,进程之间相互独立,单个Worker异常不影响整体服务。常规生产配置:Worker进程数一般设置为CPU核心数或核心数两倍,最大化利用CPU资源。二、配置语法与核心模块(高频基础)1、Nginx配置文件的核心结构由哪些部分组成?主要分为全局块、events块、http块、server块、location块,层级从上到下依次生效:全局块:配置全局参数,比如worker进程数、运行用户、PID文件路径。events块:配置网络连接属性,比如最大连接数、事件模型、是否开启长连接。http块:核心配置块,包含反向代理、负载均衡、超时时间、缓存、日志、压缩等全局WEB配置。server块:虚拟主机配置,通过监听端口、域名区分不同站点。location块:匹配具体URI请求,配置请求转发、重定向、资源匹配规则。2、location匹配规则优先级讲一下,各个符号的区别?优先级从高到低:精准匹配>前缀正则匹配>普通前缀匹配>通用匹配=:精准匹配,完全一致才生效,优先级最高。^~:前缀优先匹配,匹配成功后不再走正则匹配。~:区分大小写的正则匹配。~*:不区分大小写的正则匹配。无符号:普通前缀匹配,优先级最低。3、Nginx反向代理和正向代理的区别?正向代理:代理客户端,客户端请求外网资源,代理服务器替客户端发起请求,比如翻墙代理、公司内网代理上网,服务端不知道真实客户端地址。反向代理:代理服务端,客户端访问代理服务器,代理转发请求到后端真实业务服务,客户端无感知,隐藏后端服务地址,是企业项目最常用的场景。4、proxy_pass配置有/和无/的区别?proxy_pass:8080:不带/,会把location匹配的完整URI拼接转发。比如访问/api/test,转发为/api/xy_pass:8080/:带/,会截断location匹配的路径,只拼接后续路径。比如访问/api/test,转发为/test。三、负载均衡模块(面试重点)1、Nginx负载均衡有哪些调度策略?各自适用场景?轮询(默认):请求按顺序逐一分发到后端节点,适合后端节点性能一致、无状态服务。权重weight:权重越高接收请求越多,适合后端服务器配置性能不均的场景,给高配机器设置更高权重。ip_hash:根据客户端IP哈希分配节点,保证同一客户端固定访问同一后端节点,适合需要会话保持的场景。least_conn:最少连接策略,请求分发到当前连接数最少的节点,适合后端节点负载差异大的场景。url_hash:根据请求URL哈希分配,适合静态资源缓存、资源定点存储场景。2、负载均衡中backup、down参数的作用?down:标记节点永久不可用,不再分配请求。backup:备份节点,所有正常节点全部故障时,才会接管请求,用于服务兜底高可用。3、Nginx负载均衡如何实现健康检查?默认自带被动健康检查机制:通过max_fails(最大失败次数)、fail_timeout(故障超时时间)两个参数控制。当后端节点请求失败次数达到max_fails,会标记节点为故障,在fail_timeout时间内不再分发请求,超时后会重新尝试探测节点可用性。主动健康检查需要借助nginx_upstream_check_module第三方模块,实时探测后端节点状态。四、性能优化与高可用(进阶高频)1、Nginx高并发优化的核心配置有哪些?调整worker进程数,等于CPU核心数,开启worker绑定CPU核心,减少进程切换损耗。调高worker_connections单进程最大连接数,提升单进程并发上限。开启epoll事件模型,启用异步非阻塞模式。开启长连接keepalive,减少TCP三次握手四次挥手开销。开启gzip压缩,减小传输文件体积,提升响应速度、节省带宽。配置静态资源缓存,设置expires过期时间,减少重复请求。关闭不必要的日志、关闭access_log缓冲,减少IO消耗。调整TCP参数,优化内核网络配置,提升端口复用、连接回收效率。2、什么是动静分离?为什么要做动静分离?动静分离是将网站静态资源(图片、视频、JS、CSS、静态页面)和动态接口请求(后端业务接口、数据库查询请求)分开处理。Nginx直接处理静态资源请求,无需转发后端服务;动态请求转发给Tomcat、SpringBoot等后端服务。优势:减轻后端服务压力,充分发挥Nginx静态处理高性能优势,提升网站整体响应速度,便于单独优化静态资源缓存和加速。3、Nginx缓存机制了解吗?如何配置缓存?Nginx可对后端响应资源进行本地缓存,重复请求直接读取本地缓存,无需访问后端服务,大幅提升响应速度。核心配置参数:proxy_cache(开启缓存)、proxy_cache_path(缓存目录、大小、层级、过期时间)、proxy_cache_valid(不同状态码缓存时长)。同时可配置缓存忽略规则,比如动态接口、带参数的请求不缓存。五、故障排查与实战问题(面试压轴)1、网站出现403错误,常见原因有哪些?站点目录、文件权限不足,Nginx运行用户无读取权限。配置文件中root目录路径错误,资源不存在。开启目录访问限制,禁止列出目录内容。IP被配置黑名单拦截。反向代理后端权限校验失败,返回403。2、访问出现502、504错误,区别和排查思路?502错误:网关错误,Nginx无法连接后端服务。常见原因:后端服务宕机、端口未启动、端口被占用、防火墙拦截、代理地址端口配置错误。504错误:网关超时,Nginx成功连接后端,但后端处理请求超时未返回数据。常见原因:后端接口执行耗时过长、数据库查询卡顿、服务器负载过高、Nginx超时参数设置过小。排查流程:查看Nginx错误日志>检查后端服务状态>测试后端接口单独访问>排查服务器负载、网络、防火墙。3、Nginx平滑重启和强制重启的区别?平滑重启(nginx-sreload):不会中断正在处理的请求,Master进程加载新配置,启动新Worker进程,旧Worker进程处理完现有请求后自动退出,实现服务无间断更新配置。强制重启会直接终止所有进程,中断正在处理的用户请求,造成业务短暂中断,生产环境禁止使用。4、如何解决Nginx端口占用、地址无法绑定问题?通过netstat、ss命令查看端口占用进程,杀死占用进程或修改Nginx监听端口。检查是否存在多个Nginx进程残留,执行kill清理残留进程。检查防火墙、SELinux限制,关闭拦截策略。六、进阶场景题(中高级必问)1、如何用Nginx实现接口限流?常用限流方式?核心基于limit_req_zone模块实现限流,两种常用方式:按IP限流:限制单个IP单位时间内的请求次数,防止单IP恶意刷接口。按接口限流:针对指定URI设置访问频率,保护核心接口不被打垮。可搭配burst突发限流参数,允许少量突发请求,超出部分直接拦截,兼顾稳定性和用户体验。2、Nginx如何配置HTTPS证书,强制HTTP跳转HTTPS?1、配置443端口监听,绑定SSL证书公钥、私钥文件,开启sslon,配置加密协议和套件。2、80端口站点配置rewrite重定向规则,将所有HTTP请求永久重定向到HTTPS地址,实现全站加密访

温馨提示

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

评论

0/150

提交评论