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