当前位置: 首页 > news >正文

Nginx面试宝典【刷题系列】

文章目录

    • 1、nginx是如何实现高并发的?
    • 2、Nginx如何处理HTTP请求?
    • 3、使用“反向代理服务器”的优点是什么?
    • 4、列举Nginx服务器的最佳用途。
    • 5、Nginx服务器上的Master和Worker进程分别是什么?
    • 6、什么是C10K问题?
    • 7、请陈述stub_status和sub_filter指令的作用是什么?
    • 8、为什么不使用多线程?
    • 9、为什么要做动、静分离?
    • 10、ngx_http_upstream_module的作用是什么?


在这里插入图片描述

1、nginx是如何实现高并发的?

答:一个主进程,多个工作进程,每个工作进程可以处理多个请求,每进来一个request,会有一个 worker 进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向上游(后端)服务器转发 request ,并等待请求返回。那么,这个处理的 worker 继续处理其他请求,而一旦上游服务器返回了,就会触发这个事件,worker 才会来接手,这个 request 才会接着往下走。由于 web server 的工作性质决定了每个 request 的大部份生命都是在网络传输中,实际上花费在 server 机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即 @skoo 所说的 webserver 刚好属于网络 io 密集型应用,不算是计算密集型。

2、Nginx如何处理HTTP请求?

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

3、使用“反向代理服务器”的优点是什么?

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

4、列举Nginx服务器的最佳用途。

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

5、Nginx服务器上的Master和Worker进程分别是什么?

答:Master 进程:读取及评估配置和维持 ;Worker 进程:处理请求。

6、什么是C10K问题?

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

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

答:

  1. Stub_status 指令:该指令用于了解 Nginx 当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数 ;
  2. Sub_filter 指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据

8、为什么不使用多线程?

答:Nginx采用单线程来异步非阻塞处理请求(管理员可以配置 Nginx 主进程的工作进程的数量),不会为每个请求分配 cpu 和内存资源,节省了大量资源,同时也减少了大量的 CPU 的上下文切换,所以才使得 Nginx 支持更高的并发。

9、为什么要做动、静分离?

答:在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js 等等),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此我们后台处理忽略静态文件,但是如果直接忽略静态文件的话,后台的请求次数就明显增多了。

在我们对资源的响应速度有要求的时候,应该使用这种动静分离的策略去解决动、静分离将网站静态资源(HTML,JavaScript,CSS 等)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里将静态资源放到 nginx 中,动态资源转发到 tomcat (opens new window)服务器中,毕竟 Tomcat 的优势是处理动态请求。

10、ngx_http_upstream_module的作用是什么?

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

  • 语法:merge_slashes [on/off]
  • 默认值: merge_slashes on
  • 环境: http,server

相关文章:

  • 广州无人机考试培训收费标准(附报名流程)
  • 【开源免费】基于SpringBoot+Vue.JS美食烹饪互动平台(JAVA毕业设计)
  • python 剪切音频
  • [特殊字符]️ ‌Selenium元素存在性判断的5种方法‌
  • 归纳总结一下Tensorflow、PaddlePaddle、Pytorch构建神经网络基本流程,以及使用NCNN推理的流程
  • 快速上手 Uniapp:从入门到精通的捷径
  • css 设置svg文字的对齐方式。右对齐
  • 五、Redis哨兵监控
  • Halcon 颜色分割算子、RGB和HSV之间的转换
  • 基于STM32的智能垃圾分类与回收系统
  • Go红队开发—并发编程
  • 数据结构:二叉树的数组结构以及堆的实现详解
  • C++之继承详解
  • pikachu
  • MySQL 时区参数 time_zone 详解
  • 边缘计算收益低的三大指标
  • 使用Modbus协议西门子 S7-200 SMART PLC 通信
  • 组件传递props校验
  • leetcode59------螺旋矩阵II
  • sqlilab 46 关(布尔、时间盲注)
  • 习近平会见缅甸领导人敏昂莱
  • 全国人大常委会启动食品安全法执法检查
  • 第32届梅花奖终评启幕,上海京剧院《智取威虎山》满堂彩
  • 法治日报:商品明细是隐私,外卖员快递员不应知晓
  • 超燃!走过莫斯科街头的“中国排面”
  • 长安汽车辟谣作为二级企业并入东风集团:将追究相关方责任