首页 > 技术文章 > 面试题--Nginx

nfsmg 2022-03-10 18:57 原文

Nginx面试题

整理自网络,侵权删

1.请解释一下什么是Nginx?

Nginx是一个web服务器和反向代理服务器,用于http、https、smtp、pop3和IMAP协议

2.请列举Nginx的一些特性。

Nginx服务器的特性包括:

  • 反向代理/负载均衡器

  • 嵌入式Perl解释器

  • 动态二进制升级

  • 可用于重新编写URL,具有非常好的PCRE支持

3.请列举Nginx和Apache之间的不同点

4.请解释Nginx如何处理HTTP请求

Nginx使用反应器模式。主事件循环等操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并进行处理。单个线程可以提供数万个并发连接。

5. 在Nginx中,如何使用未定义的服务器名称来阻止处理请求

只需要将请求删除的服务器定义为:

Server { 
listen 80; 
server_name “ “ ; 
return 444; }

这里服务器名被保留为一个空字符串,他将在没有“主机”头字段的情况下匹配请求,而一个特殊的Nginx的非标准代码444被返回,从而终止连接。

6.使用“反向代理服务器“的优点是什么

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全来说是很好的,特别是当您使用web托管服务

7.请列举Nginx服务器的最佳用途

Nginx服务器的最佳用法是在网络上部署动态HTTP内容,使用SCGI、WSGI 应用程序服务器、用于脚本的FastCGI处理程序。它还可以作为负载均衡器

8.请解释Nginx服务器上的Master和Worker进程粉白是什么

  • Master进程:读取及评估配置和维持
  • worker进程:处理请求

9.请解释如何通过不同于80的端口开启Nginx?

为了通过一个不同的端口开启Nginx,你必须进入/etc/Nginx/sites-enabled/,如果这是默认文件,那么你必须打开’default‘的文件。编辑文件,并放置在你想要的端口:

 Like server {listen 81;}

10.为什么要用Nginx?

跨平台、配置简单、方向代理、高并发连接: 处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小,开启10个Nginx才占用150M内存,Nginx处理静态文件好,耗费内存少,而且Nginx内置的健康检查功能:如果一个服务器宕机,会做一个健康检查,在发送的请求就不会发送到宕机服务器上,重新将请求提交并交到其他的节点上。

使用Nginx的话还能:

  • 节省宽带,支持GZIP压缩,可以添加浏览器本地缓存
  • 稳定性高,宕机的概率非常小
  • 接受用户请求是异步的

11.为什么Nginx性能这么高?

因为它的时间处理机制:异步非阻塞时间处理机制:运用了epoll模型,提供了一个队列,排队解决

12.Nginx怎么处理请求的?

nginx接受一个请求后,首先由listen和server_name指令匹配server模块,再匹配server模块里的location,location就是实际地址

 server{          	# 第一个server区块开始,表示一个独立的虚拟主机站点
 		listen 80;		#提供服务的端口,默认80
 		server_name localhost;# 提供服务的域名主机名
 		location/{ # 第一个 location区块开始
 			root 	html;# 站点的根目录,相当于nginx的安装目录
 			index  index.html index.htm;# 默认的首页文件,多个用空格分开
 		}
 }

13.什么是正向代理和反向代理?

  • 正向代理就是一个人发送一个请求就直接到达目标服务器
  • 反向代理就是请求统一被Nginx接受,nginx反向代理服务器接受到之后,按照一定的规则分发给了后端的业务处理器进程处理了

14.为什么要做动静分离

  • Nginx的静态处理能力很强,但是动态处理能力不足,因此企业常用动静分离技术。

推荐阅读