首页 > 编程知识 正文

前端面试题目100及最佳答案,面试问题

时间:2023-05-06 08:30:02 阅读:27551 作者:2528

Nginx的并发能力在同一类型的web服务器中相对较好,因此受到很多企业的欢迎,在中国使用Nginx网站的知名用户有腾讯、淘宝、百度、京东、新浪、网易等。 Nginx是web服务器承运人所需的技能之一,我们整理了以下常见的Nginx相关问题: 仅供参考:

1、请解释一下什么是Nginx?Nginx—Ngine X是一款免费、自由、开源、高性能的HTTP服务器和反向代理服务器; 也是IMAP、POP3、SMTP代理服务器; Nginx以高性能、稳定性、丰富的功能、简单的配置和低资源消耗而闻名。

这意味着Nginx本身可以托管站点,将其作为Http服务(如Tomcat )处理,也可以用作反向代理服务器、负载平衡器和Http缓存。

Nginx解决了服务器的C10K秒内连接的客户端数量)为10k (1万)的问题。 我们设计的是异步事件驱动结构,它是一种事件驱动机制,而不是像传统服务器那样使用线程处理请求。

2、请列举Nginx的一些特性跨平台:可以在大多数Unix like系统上编译和运行。 还有Windows的移植版本。 结构非常简单。 非常简单,使用方便。 无阻塞、高并发连接—对于数据复制,磁盘I/O的第一个阶段是无阻塞。 正式测试支持5万个同时连接,实际生产中可以运行2~3万个同时连接数。 (多亏Nginx采用了最新的epoll事件处理模型(消息队列)。 Nginx代理和后端Web服务器之间不需要长时间的连接;Nginx接收用户请求是异步的。 这意味着,通过接收所有用户请求,然后一次发送到后端Web服务器,可以大大减轻后端Web服务器的压力。 发送应答消息时,一边接收来自后端Web服务器的数据,一边发送到客户端。 网络依赖性低,理论上只要ping就可以实施负载均衡,而且可以有效区分内联网、外联网的流量。 支持内置服务器的发现。 Nginx可以根据从APP应用服务器处理的页面返回的状态码、超时信息等检测服务器是否发生了故障,并立即返回错误请求并重新发送到其他节点。 另外,还具有存储器消耗量少、成本低廉(比F5硬件负载平衡器太便宜)、带宽节约、稳定性高等特点。3、请列举Nginx和Apache 之间的不同点

4、请解释Nginx如何处理HTTP请求。Nginx是一款高性能的Web服务器,可以同时处理大量并发请求。 多进程机构和异步机构的组合,异步机构使用异步无阻塞方式。 接下来介绍Nginx的多线程机制和异步无阻塞机制。

1、多进程机制

每次服务器接收客户机时,服务器主进程都会生成工作器进程,并与客户机建立连接和进行交互。 子进程将终止,直到连接断开。

使用流程的好处是每个流程都是相互独立的,不需要锁定。 减少使用锁定对性能的影响,同时降低编程复杂性,降低开发成本。 其次,采用独立的流程可以防止流程相互影响。 如果一个进程异常终止,而另一个进程正常运行,则主进程会立即启动新的工作器进程,以确保服务不会中断,从而将风险降至最低。

缺点是,OS生成子进程需要进行存储器复制等操作,在资源和时间上产生一定的开销。 如果有大量的要求,系统性能会下降。

2、异步非阻塞机制

每个工作人员都可以使用异步异步阻塞方法来处理多个客户端请求。

一个工作进程收到客户端的请求后,调用并处理IO,如果没有立即得到结果,则处理其他请求。 也就是说,无阻塞。 在此期间,客户端可以处理其他事情,也就是异步,而无需等待响应。

IO回来后,通知这个工作流程。 此进程将被通知暂时挂起当前正在处理的事务,以响应客户端的请求。

可以将请求删除5、在Nginx中,如何使用未定义的服务器名称来阻止处理请求?的服务器定义如下:

其中,服务器名称保存为空字符串,无“主机”标头字段,请求匹配,返回特殊的Nginx非标准代码444,连接终止。

6、 使用“反向代理服务器”的优点是什么?反向代理服务器可以隐藏源服务器的存在和特征。 充当互联网和web服务器之间的中间层。 这在安全性方面非常好,特别是在使用web托管服务的情况下。

7、请列举Nginx服务器的最佳用途。Nginx服务器的最佳使用方法是在网络上部署动态HTTP内容,并使用用于SCGI、wsgi APP应用程序服务器和脚本的FastCGI处理程序。 也可以作为负载平衡器使用。

8、请解释Nginx服务器上的Master和Worker进程分别是什么?主程序Master process启动后,通过for环路接收并处理外部信号; 主进程为fork ) )函数生成work

er 子进程 ,每个子进程执行一个 for循环来实现Nginx服务器对事件的接收和处理 。

一般推荐 worker 进程数与CPU内核数一致,这样一来不存在大量的子进程生成和管理任务,避免了进程之间竞争CPU 资源和进程切换的开销。而且 Nginx 为了更好的利用 多核特性 ,提供了 CPU 亲缘性的绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来 Cache 的失效。

对于每个请求,有且只有一个工作进程 对其处理。首先,每个 worker 进程都是从 master进程 fork 过来。在 master 进程里面,先建立好需要 listen 的 socket(listenfd) 之后,然后再 fork 出多个 worker 进程。

所有 worker 进程的 listenfd 会在新连接到来时变得可读 ,为保证只有一个进程处理该连接,所有 worker 进程在注册 listenfd 读事件前抢占 accept_mutex ,抢到互斥锁的那个进程注册 listenfd 读事件 ,在读事件里调用 accept 接受该连接。

当一个 worker 进程在 accept 这个连接之后,就开始读取请求、解析请求、处理请求,产生数据后,再返回给客户端 ,最后才断开连接。这样一个完整的请求就是这样的了。我们可以看到,一个请求,完全由 worker 进程来处理,而且只在一个 worker 进程中处理。

在 Nginx 服务器的运行过程中, 主进程和工作进程 需要进程交互。交互依赖于 Socket 实现的管道来实现。

9、请解释*代理设计中的正向代理和反向代理*?

首先,代理服务器一般指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。例如:GoAgent翻墙软件。我们的客户端在进行翻墙操作的时候,我们使用的正是正向代理,通过正向代理的方式,在我们的客户端运行一个软件,将我们的HTTP请求转发到其他不同的服务器端,实现请求的分发。

反向代理服务器作用在服务器端,它在服务器端接收客户端的请求,然后将请求分发给具体的服务器进行处理,然后再将服务器的相应结果反馈给客户端。Nginx就是一个反向代理服务器软件。

从上图可以看出:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

10、请解释是否有可能将Nginx的错误替换为502错误、503?

502 =错误网关

503 =服务器超载

有可能,但是您可以确保fastcgi_intercept_errors被设置为ON,并使用错误页面指令。

11、在Nginx中,解释如何在URL中保留双斜线?

要在URL中保留双斜线,就必须使用merge_slashes_off;

语法:merge_slashes [on/off]

默认值: merge_slashes on

环境: http,server

12、请解释ngx_http_upstream_module的作用是什么?

ngx_http_upstream_module用于定义可通过fastcgi传递、proxy传递、uwsgi传递、memcached传递和scgi传递指令来引用的服务器组。

13、请解释什么是C10K问题?

C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。

14、请陈述stub_status和sub_filter指令的作用是什么?

Stub_status指令:该指令用于了解Nginx当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数;

Sub_filter指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据;

15、解释Nginx是否支持将请求压缩到上游?

您可以使用Nginx模块gunzip将请求压缩到上游。gunzip模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。

16、解释如何在Nginx中获得当前的时间?

要获得Nginx的当前时间,必须使用SSI模块、 d a t e g m t 和 date_gmt和 dateg​mt和date_local的变量。

Proxy_set_header THE-TIME $date_gmt;

17、用Nginx服务器解释-s的目的是什么?

用于运行Nginx -s参数的可执行文件。

18、解释如何在Nginx服务器上添加模块?

e_local的变量。

Proxy_set_header THE-TIME $date_gmt;

17、用Nginx服务器解释-s的目的是什么?

用于运行Nginx -s参数的可执行文件。

18、解释如何在Nginx服务器上添加模块?

在编译过程中,必须选择Nginx模块,因为Nginx不支持模块的运行时间选择。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。