面试总结之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安全配置
- 隐藏版本号:
server_tokens
设置为off; - 开启HTTPS:
ssl
设置为on; - 添加黑白名单:使用
allow
、deny
; - 添加账号认证;
- 限制请求方法(GET/POST);
- 拒绝User-Agent(wget|curl),返回444状态。