写点什么

Nginx16 连环问,你被问到了吗

用户头像
周老师
关注
发布于: 2020 年 06 月 17 日

作为一个后端程序员,Nginx也是必备技能之一哦,作为一个web服务器,Nginx的性能方面是很不错的。本文总结或16个知识点,或者面试题分享给大家,后续还会继续更新⛽️。

1.什么是nginx?

Nginx是一个高性能的HTTP和反向代理服务器。同时也是一个 IMAP/POP3/SMTP 代理服务器。官方网站:http://nginx.org



2.nginx主要特征?

处理静态文件,索引文件以及自动索引;打开文件描述符缓冲. 无缓存的反向代理加速,简单的负载均衡和容错. FastCGI,简单的负载均衡和容错.模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等filter。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行 运行,而不需要相互等待。



支持 SSL 和 TLSSNI.



Nginx 它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。



Nginx 具有很高的稳定性。例如当前 apache 一旦上到 200 个以上进程,web 响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。nginx 官方表示保持 10,000 个没有活动的连接,它只占 2.5M 内存,所以类似 DOS 这样的攻击对 nginx 来说基本上是毫无用处的。



Nginx 支持热部署。它的启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运 行数个月也不需要重新启动。对软件版本进行进行热升级。



Nginx 采用 master-slave 模型,能够充分利用 SMP 的优势,且能够减少工作进程在此 盘 I/O 的阻塞延迟。当采用 select()/poll()调用时,还可以限制每个进程的连接数。



Nginx 代码质量非常高,代码很规范,手法成熟, 模块扩展也很容易。特别值得一提的是强大的 Upstream 与 Filter 链。



Nginx 采用了一些 os 提供的最新特性如对 sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。



免费开源,可以做高并发负载均衡。



3.nginx 常用命令?

启动 nginx 。



停止 nginx -s stop 或 nginx -s quit 。



重载配置 ./sbin/nginx -s reload(平滑重启) 或 service nginx reload 。



重载指定配置文件 .nginx -c /usr/local/nginx/conf/nginx.conf 。



查看 nginx 版本 nginx -v 。



检查配置文件是否正确 nginx -t 。



显示帮助信息 nginx -h 。



4.工作模式及连接数上限?

5.nginx负载均衡几种算法?

5种。



1.轮询模式(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2.权重模式 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况 3.IP_hash模式 (IP散列) 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。4.url_hash模式 5.fair模式 按后端服务器的响应时间来分配请求,响应时间短的优先分配。



6.nginx有几种进程模型?

分为master-worker模式和单进程模式。在master-worker模式下,有一个master进程和至少一个的worker进程,单进程模式顾名思义只有一个进程。



7.如何定义错误提示页面?

# 定义错误提示页面



8.如何精准匹配路径?

location =开头表示精准匹配



9.路径匹配优先级?

多个 location 配置的情况下匹配顺序为 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当 在匹配成功时候,停止匹配,按当前匹配规则处理请求。



10.如何把请求转发给后端应用服务器?



11.如何根据文件类型设置过期时间?





12.禁止访问某个目录?



13.nginx负载均衡实现过程?

首先在 http 模块中配置使用 upstream 模块定义后台的 webserver 的池子,名为 proxy-web,在池子中我们可以添加多台后台 webserver,其中状态 检查、调度算法都是在池子中配置;然后在 serverr 模块中定义虚拟主机,但是这个虚拟主 机不指定自己的 web 目录站点,它将使用 location 匹配 url 然后转发到上面定义好的 web 池子中,最后根据调度策略再转发到后台 web server 上 。



14.负载均衡配置?



15.设置超时时间?



16.开启压缩功能好处?坏处?

好处:压缩是可以节省带宽,提高传输效率



坏处:但是由于是在服务器上进行压缩,会消耗服务器起源



用户头像

周老师

关注

精通java热衷于分享java领域资料,感谢支持 2020.06.09 加入

还未添加个人简介

评论 (2 条评论)

发布
用户头像
第九点是不是有点不严谨,在同级别中是匹配到之后直接返回,但是不同级别之间是按照优先级来划分的。
2020 年 07 月 16 日 11:23
回复
用户头像
还行。
2020 年 06 月 18 日 15:54
回复
没有更多了
Nginx16连环问,你被问到了吗