Loading... # Web应用面试题 > nginx\lvs\haproxy\keeplivd\等等~~~ ### 1.nginx反向代理 > 答: 反向代理是指代理服务器接收客户端的请求,然后将请求转发到内部网络的一个或多个服务器上,并将从服务器上得到的响应返回给客户端。Nginx 作为反向代理时可以提供负载均衡、SSL终结、缓存静态内容、压缩和优化内容等功能。 > > 如何实现:proxy_pass模块 ### 2.什么是负载均衡,nginx如何实现的? > 答: 负载均衡是分散来自客户端的请求到多个服务器上,以达到优化资源使用、最大化吞吐量、最小化响应时间和避免任何单一点故障的效果。Nginx 实现负载均衡通常是通过 upstream 模块,定义一个服务器组,并使用不同的负载均衡策略(如轮询、最少连接、IP哈希等)来分散请求。 > > 如何实现:proxy_pass模块,upstream模块。 ### 3.nginx是如何处理请求的? > 答: Nginx 使用基于事件的模型和非阻塞的方式来处理请求。客户端的请求首先由 master 进程接收,然后 master 进程根据配置分配给一个或多个 worker 进程。worker 进程监听端口并接受新的请求,处理请求,并将结果返回给客户端。 ### 4.nginx正向代理和反向代理的区别? > 首先:正向代理是代理的客户段,反向代理是代理的服务端。 > > 正向代理:访问原来无法访问的资源,譬如vpn?翻墙?通过proxy 代理。 > > 反向代理:在使用反向代理时,客户端向一个服务器发送请求,而实际上该请求会被转发到后端的多个真实服务器(也称为上游服务器),然后由反向代理服务器来处理请求并将结果返回给客户端。 > > 客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址。 > > 反向代理的主要作用是提供负载均衡和高可用性。 ### 5.nginx如何优化? > 1. nginx worker进程数 > 2. nginx 最大连接数 > 3. 压缩优化:gzip > 4. 开启缓存加速:如缓存静态文件,反向代理缓存。 > 5. tcp timeout长连接优化 > 6. 优化负载均衡 ### 6.常见的http 状态码 > 200(成功) - 服务器成功返回网页 > 201(已创建) - 请求成功并且服务器创建了新的资源。 > 304(未修改) - 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 > 400(错误请求) - 服务器不理解请求的语法。 > 401(未授权)- 请求要求身份验证。 > 404(未找到) - 请求的资源不存在。 > 500(服务器内部错误) - 服务器遇到错误,无法完成请求。 > 502(错误网关)- 服务器作为网关或代理,从上游服务器收到无效响应。 > 503(服务不可用)- 服务器目前无法使用(由于超载或停机维护)。 ### 7.nginx 高可用 > 1. 使用负载均衡器:可以通过硬件负载均衡器(如 F5 等)或软件负载均衡器(如 HAProxy 等)与 Nginx 配合,实现多台 Nginx 服务器的负载均衡和故障转移。 > 2. 双机热备:利用 Keepalived 等工具实现双机热备,将两台 Nginx 服务器组成一个热备组,其中一台为主,一台为备,自动进行故障切换。 > 3. 分布式部署:将 Nginx 部署在多个节点上,通过分布式系统的机制来保障整体的可用性。 ### 8.nginx负载均衡算法 > 1. 轮询(默认) > > * 每个请求按时间顺序逐一分配到不同的后端服务器。 > * 如果后端服务器宕机,Nginx会自动剔除故障服务器,使用户访问不受影响。 > * 此策略适合服务器配置相当、无状态且短平快的服务使用。 > 2. 权重 > > * 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 > * 权重越高,分配到需要处理的请求越多。 > * 可以在主从情况下设置不同的权值,达到合理有效地利用主机资源的目的。 > 3. IP哈希 > > * 根据客户端IP地址的哈希值将请求分发到同一台后端服务器上。 > * 这样可以确保每个访客固定访问一个后端服务器,解决session不能跨服务器的问题。 > * 此策略适合有状态服务,如需要保持会话连续性的应用。 > 4. 最少连接 > > * 把请求转发给连接数较少的后端服务器。 > * 轮询算法是把请求平均地转发给各个后端,使它们的负载大致相同。但有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least\_conn方式可以达到更好的负载均衡效果。 > * 此策略适合请求处理时间长短不一造成服务器过载的情况。 ### 8.四层和七层负载的区别? 1. 四层负载均衡(tcp) 在三次负载均衡的基础上,即从第四层"传输层"开始, 使用"ip+port"接收请求,再转发到对应的机器 2. 七层负载均衡(http) 从第七层"应用层"开始, 根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。 **实现四层负载均衡的软件有:** F5:硬件负载均衡器,功能很好,但是成本很高。 lvs:重量级的四层负载软件 nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活 haproxy:模拟四层转发,较灵活 **七层负载均衡**基本都是**基于http协议的**:适用于web服务器的负载均衡。(nginx) **四层负载均衡**主要是**基于tcp协议报文**:可以做任何基于tcp/ip协议的软件的负载均衡。(haproxy、LVS) 最后修改:2025 年 06 月 24 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏