工作中要写一些React, 在打包部署的过程中,接触到了Nginx. 这两天花了点时间了解了一下, 做一下沉淀.
Nginx 常见面试题:
1. 如何保证Nginx的高可用?
利用keepalived 监控主备nginx, 并创建虚拟ip (vip)供外部访问, 当master nginx 挂掉之后, 虚拟ip就会浮动到另一台backup 上. 详解地址:http://www.uml.org.cn/zjjs/201808214.asp
2. 同为web服务器, nginx和apache的区别?
apache 是同步多线程, 线程之间的上下文切换需要消耗大量资源. nginx 是异步非阻塞的. 一个线程既不需要等待处理结果, 而且也能在等待处理结果的同时去做其他事情, 所以nginx 可以通过一个线程应对数万的请求
3. nginx的工作流程
Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程. 在创建master进程时,先建立需要监听的socket(listenfd),然后从master进程中fork()出多个worker进程,如此一来每个worker进程多可以监听用户请求的socket。
4. nginx是如何减轻后端服务器的压力的?
作为静态服务器提供静态资源; 缓存 ; 能够buffer 住断断续续的请求, 一次性发送给后端 ; 也可以buffer住后端的response, 一次性给前端.
5. 功能模块简单列表:
- upstream 转发
负载均衡的几种方式:轮询; 加权; ip_hash - 配置logFormat
- SSL 配置https
- 添加proxy
- 配置gzip和limit_rate