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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字可调控开关电源设计(论文+源码)

1 设计要求 在本次数字可调控开关电源设计过程中,对关键参数设定如下: (1)输入电压:DC24-26V,输出电压:12-24(可调); (2)输出电压误差&#xf…

清华大学《AIGC发展研究3.0》

大家好,我是吾鳴。 AIGC已经爆火好长一段时间了,特别是DeepSeek的爆火,直接让很多之前没有体会过推理模型的人可以免费的使用上推理模型,同时DeepSeek产品形态也是全球首创,就是直接把AI的思考过程展示给你看&#xff…

模型和数据集的平台之在Hugging Face上进行模型下载、上传以及创建专属Space

模型下载 步骤: 注册Hugging Face平台 https://huggingface.co/ 新建一个hf_download_josn.py 文件 touch hf_download_josn.py 编写hf_download_josn.py文件 import os from huggingface_hub import hf_hub_download# 指定模型标识符 repo_id "inter…

脚本无法获取响应主体(原因:CORS Missing Allow Credentials)

背景: 前端的端口号8080,后端8000。需在前端向后端传一个参数,让后端访问数据库去检测此参数是否出现过。涉及跨域请求,一直有这个bug是404文件找不到。 在修改过程当中不小心删除了一段代码,出现了这个bug&#xff…

C#实现本地AI聊天功能(Deepseek R1及其他模型)。

前言 1、C#实现本地AI聊天功能 WPFOllamaSharpe实现本地聊天功能,可以选择使用Deepseek 及其他模型。 2、此程序默认你已经安装好了Ollama。 在运行前需要线安装好Ollama,如何安装请自行搜索 Ollama下载地址: https://ollama.org.cn Ollama模型下载地址&#xf…

Buildroot 添加自定义模块-内置文件到文件系统

目录 概述实现步骤1. 创建包目录和文件结构2. 配置 Config.in3. 定义 cp_bin_files.mk4. 添加源文件install.shmy.conf 5. 配置与编译 概述 Buildroot 是一个高度可定制和模块化的嵌入式 Linux 构建系统,适用于从简单到复杂的各种嵌入式项目. buildroot的源码中bui…

音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介

一、引言 RTP封装H.264时,RTP对NALU Header的nal_unit_type附加了扩展含义。 由《音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介》可以知道,nal_unit…

智慧园区后勤单位消防安全管理:安全运营和安全巡检

//智慧园区消防管理困境大曝光 智慧园区,听起来高大上,但消防管理却让人头疼不已。各消防子系统各自为政,像一座座孤岛,信息不共享、不协同。 消防设施管理分散,不同区域、企业的设备标准不一样,维护情况…

RAG(检索增强生成)原理、实现与评测方法探讨

RAG是什么? 看一下RAG的英文全称:Retrieval-Augmented Generation,建索、增强、生成;一句话串起来就是通过检索增强模型的生成,是的,这就是RAG。 RAG怎么做? 目前比较通用的套路是这样的&#x…

表单制作代码,登录动画背景前端模板

炫酷动效登录页 引言 在网页设计中,按钮是用户交互的重要元素之一。一个炫酷的按钮特效不仅能提升用户体验,还能为网页增添独特的视觉吸引力。今天,我们将通过CSS来实现一个“表单制作代码,登录动画背景前端模板”。该素材呈现了数据符号排版显示出人形的动画效果,新颖有…

HBuilder X安装教程(2025版)

一,官网下载最新包: 官网链接:HBuilderX-高效极客技巧 等待工具包,下载好。 二,安装打开工具: 把HBuilderX压缩包进行压缩,然后打开压缩后的文件夹

【算法系列】希尔排序算法

文章目录 希尔排序算法:一种高效的排序方法一、基本思想二、实现步骤1. 初始化增量2. 分组与排序3. 缩小增量4. 最终排序 三、代码实现四、增量序列的选择1. Shell增量序列2. Hibbard增量序列3. Sedgewick增量序列 五、时间复杂度六、总结 希尔排序算法:…

VMware虚拟机Mac版安装Win10系统

介绍 Windows 10是由美国微软公司开发的应用于计算机和平板电脑的操作系统,于2015年7月29日发布正式版。系统有生物识别技术、Cortana搜索功能、平板模式、桌面应用、多桌面、开始菜单进化、任务切换器、任务栏的微调、贴靠辅助、通知中心、命令提示符窗口升级、文…

android keystore源码分析

架构 Android Keystore API 和底层 Keymaster HAL 提供了一套基本的但足以满足需求的加密基元,以便使用访问受控且由硬件支持的密钥实现相关协议。 Keymaster HAL 是由原始设备制造商 (OEM) 提供的动态加载库,密钥库服务使用它来提供由硬件支持的加密服…

视频字幕识别和翻译

下载的视频很多不是汉语的,我们需要用剪映将语音识别出来作为字幕压制到视频中去。 剪映6.0以后语音识别需要收费,但是低版本还是没有问题。 如果想要非汉语字幕转成中文,剪映低版本不提供这样功能。但是,用剪映导出识别字幕&am…

Rust语言基础知识详解【一】

1.在windows上安装Rust Windows 上安装 Rust 需要有 C 环境,以下为安装的两种方式: 1. x86_64-pc-windows-msvc(官方推荐) 先安装 Microsoft C Build Tools,勾选安装 C 环境即可。安装时可自行修改缓存路径与安装路…

mapbox基础,使用geojson加载fill-extrusion三维填充图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️fill-extrusion三维填充图层样式二、�…

用Python3脚本实现Excel数据到TXT文件的智能转换:自动化办公新姿势

文章目录 用Python3实现Excel数据到TXT文件的智能转换:自动化办公新姿势场景应用:为什么需要这种转换?技术解析:代码实现详解核心代码展示改进点说明 实战演练:从Excel到TXT的完整流程准备数据示例(data.xl…

llaMa模型的创新

LLaMa介绍 LLaMa是基于transformer encoder的生成式模型。 目前有:LLAMA, LLAMA2, LLAMA3 三个大的版本 论文 LLAMA 2: Open Foundation and Fine-Tuned Chat Models: https://arxiv.org/pdf/2307.09288 LLAMA 3: The Llama 3 Herd of Models https…

神经网络 - 激活函数(Sigmoid 型函数)

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质: (1) 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数. (2) 激活函数及其导函数要尽可能的简单&#xff0…