Nginx 面试 50 问

Nginx 面试 50 问(含答案,分模块,运维/开发高频考点)

覆盖基础架构、配置、反向代理、负载均衡、缓存、SSL、限流、高可用、排错,高频题标 ★,精简好记,适配面试与生产实操。


一、基础认知 & 架构(1-8题)

  1. Q:Nginx 是什么?主要用途?
    A:高性能 HTTP 和反向代理服务器,也可做邮件代理、TCP/UDP 代理。用途:静态资源服务、反向代理、负载均衡、动静分离、SSL 终端、限流、防盗链

  2. Q:Nginx 进程模型?主进程+工作进程作用?
    A:多进程模型:

  • Master 主进程:管理 Worker、加载配置、收发信号、重启/停止服务、监控子进程;
  • Worker 工作进程:实际处理客户端请求,默认单线程,相互独立。
  1. Q:Worker 进程数量如何配置?最佳值?
    A:配置 worker_processes;推荐设为 CPU 核心数(多核 CPU 充分利用性能),也可设为 auto 自动识别。

  2. Q:Nginx 事件模型?常用模型?
    A:异步非阻塞 IO 模型;Linux 下默认使用 epoll,是高性能核心;其他还有 select、poll、kqueue(BSD)。

  3. Q:Nginx 优势?对比 Apache?
    A:Nginx:高并发、低内存、异步非阻塞、支持热部署;Apache 多进程/线程模型,并发弱、资源占用高。

  4. Q:什么是热部署(平滑重启)?
    A:执行 nginx -s reload,Master 拉起新 Worker 进程处理新请求,旧 Worker 处理完存量请求后退出,服务不中断

  5. Q:Nginx 默认端口、默认站点目录、配置文件路径?
    A:默认端口 80;默认站点目录 /usr/share/nginx/html;主配置文件 /etc/nginx/nginx.conf

  6. Q:Nginx 启动、停止、重载、查看版本命令?
    A:

  • 启动:nginx
  • 停止:nginx -s stop(快速) / nginx -s quit(优雅停止)
  • 重载配置:nginx -s reload
  • 版本:nginx -v

二、核心配置 & 虚拟主机(9-15题)

  1. Q:Nginx 配置文件由哪几大模块组成?
    A:全局块、events 块、http 块、server 块(虚拟主机)、location 块。

  2. Q:虚拟主机三种实现方式?
    A:

  3. 基于域名(最常用):同一端口,不同域名区分站点;

  4. 基于端口:同一IP,不同端口区分;

  5. 基于IP:不同网卡IP区分站点。

  6. Q:location 匹配规则?优先级顺序?
    A:优先级从高到低:

  7. = 精确匹配

  8. ^~ 前缀匹配(不解析正则)

  9. ~ / ~* 正则匹配(区分/不区分大小写)

  10. 普通前缀匹配

  11. / 通用默认匹配

  12. Q:location / 和 location / 区别?*
    A:/ 匹配所有请求/* 仅匹配根路径下带后缀的请求,一般不用。

  13. Q:root 和 alias 指令区别?
    A:

  • root:拼接路径,root /html + 请求 /test/html/test
  • alias:替换路径,alias /html + 请求 /test/html
  • alias 末尾目录建议加 /,避免路径异常。
  1. Q:index 指令作用?
    A:指定默认主页,访问目录时自动读取该文件,如 index index.html index.php

  2. Q:try_files 指令作用?
    A:按顺序检查文件是否存在,不存在则跳转至最后一个参数,常用于前端路由、静态资源兜底


三、反向代理 & 动静分离(16-22题)

  1. Q:什么是反向代理?和正向代理区别?
    A:
  • 正向代理:代理客户端,客户端访问外网,服务端不知真实访客(如FQ、代理上网);
  • 反向代理:代理服务端,用户访问代理,代理转发至后端真实服务,用户无感知。
  1. Q:反向代理核心指令?
    A:proxy_pass(转发地址);配套常用:proxy_set_header 改写请求头。

  2. Q:如何传递客户端真实 IP 到后端服务?
    A:配置请求头:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

后端读取 X-Real-IP / X-Forwarded-For 获取真实IP。

  1. Q:proxy_pass 末尾加 / 和不加 / 的区别?
    A:
  • 不加 /:把 location 匹配路径一并转发
  • /截断 location 匹配路径,只转发剩余部分。
  1. Q:什么是动静分离?实现思路?
    A:将静态资源(图片、JS、CSS、HTML)和动态请求(PHP/Java 接口)拆分处理。
    实现:Nginx 直接返回静态文件,动态请求转发给应用服务器(Tomcat/PHP-FPM)。

  2. Q:Nginx 代理超时相关参数?
    A:proxy_connect_timeout 连接后端超时、proxy_read_timeout 读取响应超时、proxy_send_timeout 发送请求超时。

  3. Q:如何代理 HTTPS 后端服务?
    A:proxy_pass 填写 https:// 地址,开启 ssl_protocols,必要时配置证书校验。


四、负载均衡(23-29题)

  1. Q:Nginx 负载均衡用哪个模块?配置块?
    A:ngx_http_upstream_module,配置在 http 块内 upstream 节点组。

  2. Q:Nginx 负载均衡 5 种调度策略?
    A:

  3. 轮询(默认):请求依次分发;

  4. weight 权重:权重越高接收请求越多;

  5. ip_hash:按客户端IP哈希,固定访问同一后端(解决会话保持);

  6. least_conn:最少连接数,分发至压力最小节点;

  7. url_hash:按URL哈希,缓存场景使用。

  8. Q:ip_hash 优缺点?注意事项?
    A:优点:会话保持;缺点:后端节点上下线会导致哈希重分布,会话错乱;不支持节点权重动态调整

  9. Q:upstream 中 backup、down 状态作用?
    A:

  • down:标记节点永久不可用;
  • backup:备用节点,所有主节点故障后才启用。
  1. Q:max_fails、fail_timeout 参数作用?
    A:健康检查:max_fails 最大失败次数,达到后标记节点故障;fail_timeout 故障后暂停转发的时长。

  2. Q:负载均衡四层和七层区别?
    A:

  • 七层(HTTP 代理):解析 HTTP 协议,支持路径、域名路由、缓存;
  • 四层(stream 模块):基于 TCP/UDP 转发,不解析应用层,性能更高,适合数据库、SSH。
  1. Q:Nginx 四层负载如何开启?
    A:编译/安装开启 stream 模块,在主配置下写 stream 块,配置 upstream + server

五、缓存 & 防盗链(30-35题)

  1. Q:Nginx 静态缓存作用?
    A:缓存静态资源,减少后端请求、降低后端压力、提升访问速度。

  2. Q:缓存核心指令:expires、add_header Cache-Control?
    A:expires 设置资源过期时间;Cache-Control 控制浏览器缓存策略(public/private/no-cache)。

  3. Q:Nginx 本地磁盘缓存(proxy_cache)使用场景?
    A:缓存后端动态接口响应,重复请求直接读 Nginx 本地缓存。

  4. Q:防盗链实现方式?原理?
    A:基于 Referer 请求头校验;判断请求来源域名,非信任域名则拒绝访问、返回403。

  5. Q:如何处理空 Referer 的防盗链场景?
    A:配置 valid_referers none blocked 信任域名; 放行空来源请求。

  6. Q:图片/视频大文件优化配置?
    A:调整 client_body_buffer_sizesendfile ontcp_nopush on,开启零拷贝传输。


六、SSL/HTTPS 配置(36-40题)

  1. Q:HTTP 与 HTTPS 区别?
    A:HTTP 明文传输,端口80,不安全;HTTPS = HTTP + SSL/TLS 加密,端口443,数据加密防窃听、篡改。

  2. Q:Nginx 配置 HTTPS 必备指令?
    A:listen 443 ssl;ssl_certificate 证书公钥、ssl_certificate_key 私钥。

  3. Q:如何实现 HTTP 自动跳转 HTTPS?
    A:在 80 端口 server 块中,用 return 301 https://$host$request_uri; 永久重定向。

  4. Q:ssl_session_cache 作用?
    A:缓存 SSL 会话,减少握手次数,提升 HTTPS 访问速度。

  5. Q:HTTPS 常见性能优化点?
    A:开启会话缓存、选择高效加密套件、启用 HTTP/2、调整 SSL 超时。


七、限流 & 访问控制(41-44题)

  1. Q:Nginx 限流两大模块?
    A:
  • limit_req基于请求速率限流(按每秒请求数);
  • limit_conn基于连接数限流(限制单IP并发连接)。
  1. Q:limit_req 中 burst、nodelay 含义?
    A:burst 突发请求队列长度;nodelay 队列请求不延迟,直接处理。

  2. Q:简单IP黑名单如何实现?
    A:使用 deny IP;allow IP; 指令,顺序自上而下匹配。

  3. Q:如何限制单IP最大访问频率?
    A:组合 limit_req_zone + limit_req 配置,定义速率与队列。


八、高可用 & 排错(45-50题)

  1. Q:Nginx 高可用方案?
    A:Nginx + Keepalived;两台 Nginx 主备,共用一个虚拟IP(VIP),节点故障自动漂移 VIP。

  2. Q:Keepalived 核心原理?
    A:VRRP 协议,节点间心跳检测,主节点故障后,备节点接管 VIP,实现故障转移。

  3. Q:Nginx 常见错误码含义?
    A:

  • 403:权限不足、防盗链、IP 被拦截;
  • 404:资源不存在、路径错误;
  • 500:后端程序报错、配置语法错误、脚本异常;
  • 502 Bad Gateway:后端服务挂了、端口不通;
  • 503 Service Unavailable:后端过载、限流、节点全部故障;
  • 504 Gateway Timeout:连接/读取后端超时。
  1. Q:Nginx 502、504 排查思路?
    A:

  2. 检查后端服务是否启动、端口监听正常;

  3. 网络互通、防火墙/安全组放行;

  4. 调整 proxy 超时时间;

  5. 查看后端应用日志。

  6. Q:Nginx 配置语法检查命令?
    A:nginx -t,校验配置是否合法。

  7. Q:Nginx 日志类型?日志字段 $remote_addr、$request、$status 含义?
    A:访问日志 access.log、错误日志 error.log

  • $remote_addr:客户端IP;
  • $request:请求方法+地址+协议;
  • $status:HTTP 响应状态码。

背诵&面试建议

  1. 带 ★ 为必考高频题,优先吃透原理+配置示例;
  2. 面试回答结构:原理 + 配置 + 场景 + 排错
  3. 实操配合:亲手搭建反向代理、负载均衡、HTTPS、限流环境加深记忆。
posted @ 2026-05-30 13:13  wuyingchun1987  阅读(2)  评论(0)    收藏  举报