40个 Nginx 常问面试题
发布网友
发布时间:2024-10-23 19:20
我来回答
共1个回答
热心网友
时间:2024-10-24 11:39
Nginx 是一款轻量级且高并发能力的 Web 服务器与反向代理服务器,以内存占用少和启动速度快见长。它广泛应用于互联网项目中,如新浪、网易、腾讯等网站。
Nginx 的优点包括:高性能、内存占用低、高并发处理能力、模块化设计易于扩展等。
Nginx 的应用场景包括:Web 服务器、反向代理、负载均衡、静态内容缓存等。
Nginx 通过异步非阻塞的工作方式实现高并发处理:当一个请求需要等待上游服务器响应时,该进程会注册一个事件,一旦上游服务器返回,该进程会恢复处理请求。这使得 Nginx 能在有限的进程数下处理大量并发请求。
正向代理(Forward Proxy)是指客户端代理服务器与原始服务器(origin server)之间进行连接,然后将请求转发给原始服务器,并将原始服务器的响应返回给客户端。
反向代理(Reverse Proxy)则是在客户端与服务器之间,代理端代理的是服务器端,用于优化性能、增强安全性。
反向代理服务器的优点包括:隐藏服务器信息、增强安全性、优化性能、实现负载均衡等。
Nginx 的目录结构主要包括配置文件(nginx.conf)、日志文件、工作目录等。配置文件中包含 Nginx 的各种属性和模块。
Cookie 和 Session 的区别主要在于:Cookie 存储在客户端,而 Session 存储在服务器端。它们都用于存储用户信息,但 Session 提供了更好的安全性。
Nginx 不使用多线程的原因是:多线程会导致资源消耗过大,Nginx 采用单线程异步非阻塞处理请求,能更高效地利用资源。
在对比 Nginx 和 Apache 时,Nginx 被认为是轻量级的服务器,占用资源少,抗并发能力强。Apache 则是基于多进程模型,处理请求时可能消耗更多资源。
动静分离的核心是将动态资源与静态资源分开处理,以提高静态资源的访问速度,降低服务器负载。
Nginx 的动静分离可以通过配置文件实现,指定动态资源和静态资源的路径。
Nginx 负载均衡的策略包括轮询、权重、IP Hash、公平算法(第三方插件)、URL Hash(第三方插件)等。
使用 Nginx 解决前端跨域问题的方式是:通过 Nginx 转发请求,将跨域的接口重定向到正确的服务器地址。
Nginx 虚拟主机配置分为基于域名、端口、IP 的虚拟主机配置。
location 指令用于根据用户请求的 URI 进行匹配,执行不同的操作。
实现限流通常使用漏桶算法或令牌桶算法,Nginx 中的限流功能基于漏桶算法实现。
Nginx 配置高可用性通常通过负载均衡和故障切换实现,确保服务器的稳定运行。
Nginx 可以通过配置代码阻止特定 IP 的请求,例如使用空字符串作为服务器名。
在 Nginx 中*浏览器访问通常通过配置 HTTP 头部实现,例如设置访问控制(Access-Control-Allow-Origin)等。
Nginx 实现后端服务的健康检查通常通过 ngx_http_upstream_check_mole 模块,确保后端服务的稳定。
开启 Nginx 的压缩功能可以显著减少网页、CSS、JS 等静态资源的大小,提高传输效率。
ngx_http_upstream_mole 用于定义可与 Nginx 交互的服务器组。
C10K 问题是关于如何在单个服务器上高效处理 10,000 个并发连接的问题。
Nginx 支持将请求压缩到上游服务器,使用 gunzip 模块解压缩响应。
在 Nginx 中获取当前时间可通过 SSI 模块和 date_local 变量实现。
用 Nginx 服务器解释 -s 参数的目的是运行 Nginx 可执行文件。
在生产环境中设置 Nginx worker 进程的数量应根据服务器的 CPU 核心数来决定。在多核 CPU 下,可以设置与核心数相同的进程数;在单核 CPU 下,应仅设置一个进程以避免性能损失。
Nginx 状态码解释如下:499 表示服务端处理时间过长,客户端主动关闭连接;502 可能是 FastCGI 相关问题,如进程未启动、缓冲*不足、执行时间过长等。