【面试全纪实 | Nginx 02】请回答,你真的熟悉Nginx吗?

🗺️博客地图​​​​​​​

📍1、你如何通过不同于80的端口开启Nginx?

📍2、是否有可能将Nginx的错误替换为502错误、503?

📍3、为什么Nginx性能这么高?

📍4、Nginx怎么处理请求的?

📍5、什么是正向代理和反向代理?

📍6、使用反向代理服务器的优点是什么?

📍7、怎么理解Nginx静态资源?

📍8、如何用Nginx解决前端跨域问题?

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

📍10、请解释什么是C10K问题


1、你如何通过不同于80的端口开启Nginx?

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

server {listen 81;... ...
}

2、是否有可能将Nginx的错误替换为502错误、503?

502 =错误网关

503 =服务器超载

有可能,但是需要先将 fastcgi_intercept_errors 设置为 ON ,并使用错误页面指令。

server {listen 80;server_name example.com;location / {fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;fastcgi_intercept_errors on;error_page 502 503 504 /custom_50x.html;root /var/www/html;}
}

3、为什么Nginx性能这么高?

‌        Nginx性能高的原因主要包括以下几个方面‌:

  • 异步非阻塞IO模型‌:Nginx采用异步非阻塞事件处理机制,这种方式使得Nginx可以像事件驱动的方式处理请求,不会因为阻塞等待IO而降低处理效率‌。
  • 多进程/多线程处理‌:Nginx采用多进程/多线程的方式处理请求,每个进程/线程独立处理请求,提高了并发处理能力,能够轻松处理大量并发请求‌。
  • IO多路复用模型‌:Nginx使用IO多路复用模型,如epoll,这种模型允许Nginx在事件发生时才将控制返回给程序,其他时候内核挂起进程,随时待命,提高了处理效率‌。
  • 模块化设计‌:Nginx的模块化设计使得代码结构简洁,功能扩展容易,减少了不必要的资源消耗,提高了性能‌。
  • 轻量级和高效‌:Nginx的代码量非常少,占用内存较少,能够在资源受限的系统中运行,且在高负载下不容易崩溃‌。
  • 高度可定制性‌:Nginx支持自定义模块和动态加载功能,开发人员可以根据实际需求进行二次开发,满足个性化需求‌。
  • 负载均衡‌:Nginx内置负载均衡模块,可以将请求分发到多个服务器上,分摊服务器负载,提高整体系统的处理能力‌。

        这些因素共同作用,使得Nginx在处理高并发、高负载的情况下表现出色,成为许多高性能网站和应用的优选服务器软件。

4、Nginx怎么处理请求的?

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

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

5、什么是正向代理和反向代理?

‌正向代理和‌反向代理是两种不同的代理服务器配置,它们在工作原理和使用方式上有显著的区别。‌

正向代理位于客户端和目标服务器之间,客户端向代理服务器发送请求,并由代理服务器代表客户端与目标服务器通信。反向代理则位于客户端和目标服务器之间,代理服务器接收客户端的请求后,将请求转发给内部网络上的服务器,并将结果返回给客户端。

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

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

  • 负载均衡‌:反向代理服务器可以将客户端请求动态地分配到多个后端服务器上,根据服务器的负载情况合理分配请求,防止单一服务器过载,提高系统的整体处理能力和响应速度‌。
  • 缓存加速‌:反向代理服务器可以缓存静态内容和频繁访问的动态内容,减少对后端服务器的请求,从而加快网页加载速度,提升用户体验‌。
  • 安全性增强‌:反向代理服务器可以实施安全策略,如防火墙、访问控制和SSL加密等,保护后端服务器免受恶意攻击和未经授权的访问,提高系统的安全性‌。
  • 隐藏后端服务器信息‌:通过反向代理服务器,可以隐藏后端服务器的真实IP地址和其他敏感信息,充当互联网云和web服务器之间的中间层,对外界只显示代理服务器的地址,增强系统的安全性‌。
  • 简化架构和维护‌:反向代理服务器可以将请求分发和流量管理的逻辑集中在一个地方,简化整体架构。同时,后端服务器的管理和维护也更加方便,可以独立地进行配置和扩展,提高系统的可管理性和可维护性‌。
  • 允许多服务器共享同一IP‌:通过使用反向代理服务器,可以实现单个公网IP地址支持多个服务器,这对于IP地址资源紧张的情况下非常有用‌。
  • 防火墙作用‌:所有的客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设置过滤规则,防止不安全信息的传播‌。
  • 维护镜像服务器‌:在关闭主服务器进行维护时,可以通过代理指向镜像服务器,而不需要关闭整个站点‌。
  • 重定向不同类型的内容到不同的服务器‌:例如,所有视频都来自一个服务器,所有表单输入到另一个服务器。通过这种方式,可以组合多个服务器来生成一个站点‌。

7、怎么理解Nginx静态资源?

静态资源:是在Web开发中不经常改变的文件,比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的,不需要服务器端的动态处理,对静态资源的访问,就是存放在nginx的html页面,我们可以自己编写。

8、如何用Nginx解决前端跨域问题?

使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址。

比如:

  • 前端server的域名为:mz.server.com;
  • 后端服务的域名为:linux.server.com。

现在 mz.server.com 对 linux.server.com 发起请求一定会出现跨域(不遵守同协议、同域名、同端口的同源策略的通信就会产生跨域)。

现在需要启动 nginx 服务器,将 server_name 设置为 mz.server.com,然后设置相应的 location 以拦截前端需要跨域的请求,最后将请求代理回 linux.server.com。如下面的配置:

server {listen 80;server_name mz.server.com;location / {proxy_pass linux.server.com;}
}

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

只需将请求删除的服务器就可以定义为:

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

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

10、请解释什么是C10K问题

C10K问题指的是服务器如何支持10000个并发连接的问题。C10K中的“C”代表“Client”(客户端),“10K”则表示10000。这个问题源于互联网的快速发展,特别是在Web2.0时代,用户群体急剧增长,应用程序的逻辑变得更加复杂,需要服务器同时处理大量的并发连接‌。

拓展:

为了解决C10K问题,主要有以下几种策略:

IO多路复用‌:利用select、poll和epoll等机制,一个线程可以管理多个文件描述符,减少线程和进程的创建,从而降低系统资源的消耗‌。

非阻塞IO‌:通过设置socket为非阻塞模式,使用IO就绪通知机制来处理IO操作,避免线程在等待IO时被阻塞‌。

异步IO‌:使用异步IO调用,当IO操作完成时,通过信号量或完成端口进行通知‌。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于Multisim信号波形发生器电路正弦波方波三角波锯齿波(含仿真和报告)

【全套资料.zip】正弦方波三角波锯齿波方波占空比可调频率可调电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.设计一个能够产生多个信号输出的信号发生器, 要求输出波形…

GC9A01驱动移植(HALL库)

最近在做LVGL的移植,用到的屏幕驱动时GC9A01的,记录一下学习历程,防止日后遗忘。 这款屏幕我使用的是SPI协议,参考了部分稚辉菌大佬这个项目的程序: 【自制】我做了个能动的迷你电脑配件!【软核】_哔哩哔…

PCIe板卡标准尺寸

一、板卡尺寸说明 两种PCIe外接卡的高度,即全高(Standard height)111.15 mm (4.376 inches)和半高(half height)68.90 mm (2.731 inches); 两种PCIe外接卡的长度:全长(full length&a…

docker 阿里云镜像加速

在阿里云首页点击产品-容器-容器镜像服务ACR 无需购买,直接进去控制台创建个人版 完成后点击镜像加速器 选择对应的系统,按照操作文档完成

KPaaS洞察|异构系统中用户角色与权限分类及管理解决方案

多个异构系统的使用已经成为企业常态。每个系统通常有自己独立的用户角色和权限设置,导致权限管理复杂且容易出现冲突。如何在多个异构系统中统一、有效地进行用户角色和权限管理,已成为企业保障数据安全和提升管理效率的关键挑战。通过集中式权限管理平…

食品配送管理系统(源码+文档+部署+讲解)

食品配送管理系统是成品商业化项目,系统可基于源码二开。 系统概述 餐饮食品配送,包含配送人APP、下单APP、管理端等,实现订餐、配餐,用于食品店、中央厨房等订餐、团餐业务 本项目名称为食品配送系统,是针对食品配…

领夹麦克风哪个品牌音质最好?无线领夹麦克风可以唱歌吗?

随着短视频和直播行业的蓬勃发展,无线领夹麦克风已成为内容创作者提升音质体验的关键一环。但遗憾的是,市场上充斥着太多夸大其词、华而不实的宣传,诸如“一键降噪”、“无损传输”等概念满天飞,让消费者难以分辨真伪。许多朋友在…

大模型学习笔记------BLIP模型的再思考

大模型学习笔记------BLIP模型的再思考 1、BLIP推理---如何进行“图生文”2、BLIP推理---如何进行视觉问答(Visual Question Answering, VQA)3、BLIP推理---如何进行图文检索(Image-text retrieval)任务4、总结 上一篇文章上文中讲…

c# 调用c++ 的dll 出现找不到函数入口点

今天在调用一个设备的dll文件时遇到了一点波折,因为多c 不熟悉,调用过程张出现了找不到函数入口点,一般我们使用c# 调用c 文件,还是比较简单。 [DllImport("AtnDll2.dll",CharSet CharSet.Ansi)]public static extern …

H5BuildX发行uniapp h5版本的正确姿势

在manifest.json中配置基础路径 在上传到服务器后,需要将打包后的文件夹修改为基础路径中相同的文件名 否则网页的css、js等资源文件会因为路径问题始终访问不了

C++(Qt)软件调试---符号转换工具cv2pdb (24)

C(Qt)软件调试—符号转换工具cv2pdb (24) 文章目录 C(Qt)软件调试---符号转换工具cv2pdb (24)[toc]1、概述🐜2、下载cv2pdb🪲3、qt程序使用cv2pdb🦧1.1 方法1:命令行1.2 方法2&#…

MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中

MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中 基础篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的…

ReactPress与WordPress:两大开源发布平台的对比与选择

ReactPress与WordPress:两大开源发布平台的对比与选择 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。两款备受欢迎的开源发布平台——ReactPress和WordPress,各自拥有独特的优势和特点&am…

Python多进程间通讯(包含共享内存方式)

文章目录 1 通过非共享内存配合队列方式2 通过共享内存配合队列方式 注:本博文测试环境为Linux系统。 1 通过非共享内存配合队列方式 下面是一个常见的生产者与消费者的模式示例,这里分别启动了两个子进程,一个为生产者(producer…

djang5 官网_polls_app_05( 关于代码测试)

这篇教程从 教程4 结束的地方开始。已经构建了一个网络投票应用程序,现在将为其创建一些自动化测试。 1. 原因: 雅各布卡普兰-莫斯(Jacob Kaplan-Moss),Django的原始开发者之一,说过:“没有测…

准双向/弱上拉(标准8051输出模式)、仅为输入(高阻)、开漏输出、推挽输出、上拉电阻、下拉电阻都是什么?

准双向/弱上拉(标准8051输出模式): 弱上拉:即输出的1驱动能力是有限的 准双向:可以输入也可以输出 为什么是弱上拉呢? 当三极管断开的时候,“内部输入”处应该是高电平(前提的后端…

Linux高阶——1110—死锁问题原子访问线程控制与调度线程同步

目录 1、旋转锁 2、死锁问题 死锁问题举例: 1、双线程死锁 代码 成功截图 2、单线程死锁 死锁问题处理: 死锁问题预防: 有向图 3、原子访问 1、原子访问概念 2、原子访问可用函数 原代码 未加锁代码输出 修改后代码 修改后截…

python入门3

IDE的概念 IDE(Integrated Development Environment)又被称为集成开发环境。说白了,就是有一款图形化界面的软件,它集成了编辑代码,编译代码,分析代码,执行代码以及调试代码等功能。在我们Python开发中,最常…

Ollama—87.4k star 的开源大模型服务框架!!

这一年来,AI 发展的越来越快,大模型使用的门槛也越来越低,每个人都可以在自己的本地运行大模型。今天再给大家介绍一个最厉害的开源大模型服务框架——ollama。 项目介绍 Ollama 是一个开源的大语言模型(LLM)服务工具…

mysql中的EXISTS和NOT EXISTS使用详解

本文来编写一个实例说下mysql中的EXISTS和NOT EXISTS使用详解 文章目录 exists用法SQL中in, not in, exists, not exists的区别使用实例本文小结 exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句。如果括号…