nginx的知识点和常见面试题
nginx常见面试题
1.什么是nginx
Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx 主要提供反向代理、负载均衡、动静分离(静态资源服务)等服务。
2.正向代理和反向代理
2.1正向代理
A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,在这个过程中B就扮演了一个正向代理的角色,这个过程中,真正借钱的人是谁,C是不知道的。
正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,正向代理比较常见的一个例子就是 v*n 了。
2.2反向代理
A通过B借钱,B借给他了,但是A并不知道是谁借钱给他的,这笔钱可能来自C,D,E,F,G…
反向代理隐藏了真实的服务端,当我们访问www.baidu.com的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了。www.baidu.com就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到提供真实服务的服务器那里去。
通过下面的图应该能够更好的理解
所以,简单的理解,就是正向代理是为客户端做代理,代替客户端去访问服务器,而反向代理是为服务器做代理,代替服务器接受客户端请求。
3.负载均衡
在高并发情况下需要使用,其原理就是将并发请求分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。
nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
nginx 的四种负载均衡调度算法
(1)轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 可以通过设定weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
(2)ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
(3)fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
(4)url_hash(第三方)
4.动静分离
动静分离,就是将css、js、jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能。
5.nginx的优点
Nginx 有以下 5 个优点:
(1)高并发、高性能(这是其他 web 服务器不具有的)
(2)可扩展性好(模块化设计,第三方插件生态圈丰富)
(3)高可靠性(可以在服务器行持续不间断的运行数年)
(4)热部署(这个功能对于 Nginx 来说特别重要,热部署指可以在不停止 Nginx 服务的情况下升级 Nginx)
(5)BSD 许可证(意味着我们可以将源代码下载下来进行修改然后使用自己的版本)
6.nginx的四个主要组成部分
(1)Nginx 二进制可执行文件:由各模块源码编译出一个文件
(2)nginx.conf 配置文件:控制 Nginx 行为
(3)acess.log 访问日志: 记录每一条 HTTP 请求信息
(4)error.log 错误日志:定位问题