Halo

A magic place for coding

0%

实习面经 --Nginx 基础

面试总结之 Nginx 基础

  Nginx 是当下比较流行的高性能服务器,对于后端开发的面试来说,如果你能够对 Nginx 有一定的了解,那么肯定会给你加不少分。这里就为大家总结一下常见的考点。总结的部分是结合了教科书、其他面经以及个人的面试经历,相信能够帮助到大家。如果有不足的地方,欢迎大家指出!

   本博客长期更新,欢迎大家收藏、订阅!


1.Nginx 是什么

  • Nginx 是一个高性能的 Web 服务器和反向代理服务器,支持 http,https,smtp,pop3,imap 等协议。
  • 其特点是占有内存少,并发能力强。

2. 特点

  • 反向代理 / L7 负载均衡器(第 7 点详细解释)
  • 嵌入式 Perl 解释器
  • 动态二进制升级
  • 重写 URL,具有非常好的 PCRE 支持

3.Nginx 与 Apache

Nginx Apach
1 基于事件 基于流程
2 所有请求由一个线程处理 单个线程处理单个请求
3 避免子进程的概念 j 基于子进程
4 在内存消耗和连接上更好
5 支持 php 使用 php 插件,对 python 和 ruby 比较友好
6 不支持 IBMi、OpenVMS 等 OS 支持更多的 OS
7 只有核心功能 提供更多功能
8 性能和可伸缩性不依赖于硬件 依赖于 CPU 和内存等硬件

4. 如何处理 http 请求

  Nginx 使用反应器模式,主循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并进行处理。


5. 反向代理服务器的优点

   反向代理服务器可以 ** 隐藏 ** 源服务的存在和特征。它充当互联网云和 Web 服务器之间的中间层。这对于安全方面来说是很好的,特别是使用 Web 托管服务。


6.master 和 slave 进程

  • master 进程:读取及评估配置和维持
  • slave 进程:处理请求

7. 各层负载均衡的区别

  • 二层负载均衡:通过虚拟 MAC 地址接收请求,然后再分配到真实的 MAC 地址
  • 三层负载均衡:通过虚拟 IP 地址接收请求,然后再分配到真实的 IP 地址。
  • 四层负载均衡:通过虚拟 IP + 端口接收请求,然后再分配到真实的服务器(NAT 技术)。
  • 七层负载均衡:通过虚拟的 URL 或主机名(HTTP 协议、cookie 信息)接收请求,然后再分配到真实的服务器。

8. 应用场景

  • 将用户请求转到特定的服务器(如文字服务器、图片服务器、视频服务器)
  • 在一定程度上防止了 SYN 攻击

9.Nginx 安全配置

  1. 隐藏版本号:server_tokens 设置为 off;
  2. 开启 HTTPS:ssl 设置为 on;
  3. 添加黑白名单:使用 allowdeny
  4. 添加账号认证;
  5. 限制请求方法(GET/POST);
  6. 拒绝 User-Agent (wget|curl),返回 444 状态。

Reference

  1. Nginx 是什么

Welcome to my other publishing channels