预应力塑料波纹管用途
基础概念题必问
Nginx 是什么核心应用场景Nginx 是高性能、轻量级的 HTTP Web 服务器、反向代理服务器、邮件代理服务器。
核心场景静态资源 Web 服务HTML/CSS/JS/ 图片反向代理、负载均衡动静分离HTTPS 部署、限流、缓存、防盗链高并发网关层
Nginx 相比 Apache 优势高并发异步非阻塞事件驱动epoll单机支持万级并发轻量内存占用低、配置简洁高性能静态资源处理极快热部署支持reload不中断服务模块化设计、扩展性强
Nginx 进程模型master-workermaster 进程主进程读取验证配置、管理 worker 进程、接收信号reload/stop、平滑重启worker 进程工作进程实际处理网络请求、事件循环、响应客户端优点稳定一个 worker 挂了不影响整体、利用多核 CPU、平滑升级
为什么 Nginx 用多进程而非多线程避免线程切换开销、锁竞争进程独立稳定性更高充分利用多核事件驱动模型效率更高平滑重启 / 热部署更安全
核心配置 语法高频
Nginx 配置文件结构分为 4 块全局块worker_processes、error_log 等events 块连接配置worker_connections、use epollhttp 块全局 HTTP 配置gzip、include、upstream可包含多个server 块server 块虚拟主机listen、server_name、root包含多个location 块匹配 URI 做路由
location 匹配规则与优先级面试必考匹配类型优先级从高到低精准匹配完全相等优先最高^~ 前缀匹配匹配到即停止正则检查正则匹配区分大小写 / ~不区分*普通前缀匹配 /xxx通用匹配 /示例location /index { ... } # 最高 location ^~ /static { ... } # 次之 location ~ \.(jpg|png)$ { ... } # 正则 location / { ... } # 兜底
try_files 作用按顺序检查文件 / 目录不存在则转发或返回 404常用于 SPAVue/React路由。
location / { try_files $uri $uri/ /index.html; }
rewrite 与 return 区别return直接返回状态码 / URL停止后续处理性能高rewriteURL 重写可继续匹配其他 location支持正则重写
反向代理 负载均衡核心
正向代理 vs 反向代理正向代理代理客户端访问外部服务如翻墙服务端不知道真实客户端反向代理代理服务端客户端不知道真实后端统一入口、负载、安全
Nginx 负载均衡策略必背轮询默认请求均匀分发weight 加权轮询权重越高分配越多ip_hash按客户端 IP 哈希固定访问一台解决 Session 问题least_conn最少连接数优先fair第三方按后端响应时间分配url_hash按 URL 哈希缓存命中率高
upstream 配置示例加权 健康检查upstream backend { server
192.
168.
10:8080 weight3; server
192.
168.
11:8080 weight2; server
192.
168.
12:8080 backup; # 备用 server
192.
168.
13:8080 down; # 下线 } location / { proxy_pass http://backend; }
ip_hash 缺点后端节点上下线哈希结果会变大量 Session 迁移无法按负载动态调整适合有状态服务不适合微服务无状态架构
动静分离 缓存
什么是动静分离静态资源图片、JS、CSS由 Nginx 直接返回动态请求接口转发给 Tomcat/Java 服务提升访问速度、减轻后端压力
Nginx 如何做缓存使用proxy_cache缓存后端响应proxy_cache_path /tmp/nginx_cache levels1:2 keys_zonecache_zone:10m inactive1d; location /api { proxy_cache cache_zone; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 304 1h; }
限流 安全高频
Nginx 两种限流方式连接限流limit_conn限制同一 IP 并发连接数请求限流limit_req限制单位时间请求数漏桶算法示例请求限流limit_req_zone $binary_remote_addr zonereq_limit:10m rate10r/s; location /api { limit_req zonereq_limit burst5 nodelay; }burst突发队列nodelay突发请求不延迟直接处理
如何实现防盗链通过valid_referers校验来源location ~* \.(jpg|png|gif)$ { valid_referers none blocked server_names *.xxx.com; if ($invalid_referer) { return 403; } }
Nginx 配置 HTTPS 步骤申请 SSL 证书crt/key监听 443 端口配置 ssl_certificate/ssl_certificate_key开启 ssl、配置协议与加密套件80 端口重定向到 443
性能优化高级面试
Nginx 常用优化配置worker_processes auto与 CPU 核心数一致worker_connections 10240单进程最大连接数use epoll事件模型keepalive_timeout 65长连接超时open_file_cache文件描述符缓存gzip on压缩文本资源关闭 access_log 或开启缓冲
什么是惊群问题Nginx 如何解决惊群多 worker 同时等待同一个连接只有一个抢到浪费资源Nginx 解决方案互斥锁accept_mutex同一时间只有一个 worker 接收新连接
高可用 部署
Nginx 如何实现高可用使用Keepalived Nginx主备 Nginx 节点虚拟 IPVIP漂移主节点挂掉VIP 自动切到备机结合脚本检测 Nginx 存活自动触发切换
Nginx 平滑重启 / 重载命令重载配置不中断服务nginx -s reload快速停止nginx -s stop优雅停止处理完请求nginx -s quit检查配置nginx -t
故障排查场景题必考
502 Bad Gateway 原因后端服务Tomcat宕机 / 无响应后端超时、队列满、拒绝连接upstream 配置错误后端进程卡死、线程池耗尽
504 Gateway Timeout 原因Nginx 等待后端响应超时后端业务逻辑慢、DB 慢查询、死锁proxy_read_timeout 时间过短
403 Forbidden 原因目录 / 文件权限不足禁止目录浏览autoindex offIP 黑名单、防盗链拦截配置错误无首页文件
404 Not Found 原因文件不存在location 匹配错误root/alias 路径错误后端接口不存在
高频综合面试题
Nginx 处理一个 HTTP 请求完整流程建立 TCP 连接三次握手master 接收连接转给 worker解析请求行、请求头匹配 server_name → 匹配 location执行 rewrite、try_files、权限校验静态资源直接返回 / 动态请求 proxy_pass 转发接收后端响应返回客户端关闭 / 保持长连接
alias 和 root 区别root路径拼接 root locationalias精确替换路径不拼接 locationlocation /img/ { root /data; # 实际路径 /data/img/xxx.jpg } location /img/ { alias /data/static/; # 实际路径 /data/static/xxx.jpg }
Nginx 为什么能支撑高并发异步非阻塞 epoll 事件驱动多进程利用多核内存池设计减少内存碎片零拷贝sendfile高效输出静态文件无锁设计请求独立处理
简短速记版面试前 10 分钟背进程master 管理worker 干活location 优先级^~ 正则 普通 /负载策略轮询、weight、ip_hash、least_conn限流limit_req漏桶、limit_conn502 后端挂 / 拒绝504 后端超时403 权限 / 防盗链优化worker_processes、epoll、长连接、gzip、缓存高可用Keepalived VIP
户外直播-户外直播应用