史上最全Nginx面试题及答案
1.Nginx简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
2.正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
3.反向代理
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
4.负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
5.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
6.请列举Nginx的一些特性?
Nginx服务器的特性包括:反向代理/L7负载均衡器 ;嵌入式Perl解释器 ;动态二进制升级;可用于重新编写URL,具有非常好的PCRE支持。
7.nginx和apache的区别?
轻量级,同样起web 服务,比apache 占用更少的内存及资源;抗并发,nginx处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程。
8.nginx是如何实现高并发的?
一个主进程,多个工作进程,每个工作进程可以处理多个请求,每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker继续处理其他请求,而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。由于web server的工作性质决定了每个request的大部份生命都是在网络传输中,实际上花费在server机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即@skoo所说的webserver刚好属于网络io密集型应用,不算是计算密集型。
9.Nginx如何处理HTTP请求?
Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并进行处理。单个线程可以提供数万个并发连接。
10.为什么要用Nginx?
- 跨平台、配置简单
- 非阻塞、高并发连接:
处理2-3万并发连接数,官方监测能支持5万并发 - 内存消耗小:
开启10个nginx才占150M内存,Nginx采取了分阶段资源分配技术 - nginx处理静态文件好,耗费内存少
- 内置的健康检查功能:
如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。 - 节省宽带:
支持GZIP压缩,可以添加浏览器本地缓存 - 稳定性高:
宕机的概率非常小 - master/worker结构:
一个master进程,生成一个或者多个worker进程 - 接收用户请求是异步的:
浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力,一边接收web服务器的返回数据,一边发送给浏览器客户端 - 网络依赖性比较低,只要ping通就可以负载均衡
- 可以有多台nginx服务器
11.为什么Nginx性能这么高?
得益于它的事件处理机制:
异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决
12.为什么不使用多线程?
Nginx:采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换,所以才使得Nginx支持更高的并发。
13.在Nginx中如何在URL中保留双斜线?
要在URL中保留双斜线,就必须使用merge_slashes_off;语法:merge_slashes [on/off] ; 默认值: merge_slashes on ;环境: http,server
14.ngx_http_upstream_module的作用是什么?
ngx_http_upstream_module用于定义可通过fastcgi传递、proxy传递、uwsgi传递、memcached传递和scgi传递指令来引用的服务器组。
15.什么是C10K问题?
C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。
16.请陈述stub_status和sub_filter指令的作用是什么?
- Stub_status指令:该指令用于了解Nginx当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数 ;
- Sub_filter指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据
17.Nginx是否支持将请求压缩到上游?
可以使用Nginx模块gunzip将请求压缩到上游。gunzip模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。
18.解释如何在Nginx中获得当前的时间?
要获得Nginx的当前时间,必须使用SSI模块、dategmt和date_gmt和dategmt和date_local的变量。Proxy_set_header THE-TIME $date_gmt;
19.用Nginx服务器解释-s的目的是什么?
用于运行Nginx -s参数的可执行文件。
20.解释如何在Nginx服务器上添加模块?
在编译过程中,必须选择Nginx模块,因为Nginx不支持模块的运行时间选择。
21.列举Nginx服务器的最佳用途。
Nginx服务器的最佳用法是在网络上部署动态HTTP内容,使用SCGI、WSGI应用程序服务器、用于脚本的FastCGI处理程序。它还可以作为负载均衡器。
22.Nginx服务器上的Master和Worker进程分别是什么?
- Master进程:读取及评估配置和维持 ;
- Worker进程:处理请求。
史上最全Nginx面试题及答案相关推荐
- 史上最全Redis面试题及答案。
花了大量时间整理了这套Redis面试题 首发50题,绝无仅有,从入门到精通 从基础,高级知识点,再到集群,运维,方案- 弄明白了这些题可以说可以成为面霸了 面试官都得折服,Redis学得怎么样,都来检 ...
- 2018最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)--转载
版权声明:本文为转载文章,感谢博主小胖梅的博客,如有侵权,请联系我删除,谢谢 转载链接: https://blog.csdn.net/xm1037782843/article/details/8070 ...
- 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---Vue篇
★★★ 如何使用原生 Node.js 操做 cookie? ★★ 什么是 Node.js?我们在哪里使用它? ★★ 为什么要使用 Node.js? ★★★ Node.js 有哪些特点? ★★★ set ...
- 2023最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k-15k的常见面试题 个人录制的最新Vue项目学习视频:B站 小胖梅-的个人空间_哔哩哔哩_Bilibili 红色为常见面试题 ====== ...
- 史上最全前端面试题(含答案)-B篇
面试有几点需要注意 面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑. 题目类型: 技术视野.项目细节.理论知识型题,算法题,开放性题,案例题. 进行追问: 可以确保问到你开 ...
- 应届生web前端面试题_史上最全前端面试题(含答案)
2015-10-30 06:30:03 阅读( 385 ) HTML+CSS 1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本. ...
- 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---手写代码篇
★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并 ...
- 史上最全redis面试题及答案吊打面试官
1,什么是Redis? 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向.另外,redis ...
- 史上最全Redis面试题
转载自 史上最全Redis面试题及答案. 1.什么是Redis? 2.Redis相比memcached有哪些优势? 3.Redis支持哪几种数据类型? 4.Redis主要消耗什么物理资源? 5.Red ...
- 2019史上最全java面试题题库大全800题含答案
2019史上最全java面试题题库大全800题含答案 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中的自动装配有 ...
最新文章
- 搭建Mantis 缺陷管理系统(转)
- 创建web服务器||HTTP协议的概念||报文||HTTP请求与响应处理——未完待续
- php点菜系统开题报告,点餐管理系统的设计与实现-开题报告
- 2.12日递推专题第一题
- 文本框赋值guide matlab,科学网-Matlab: 学习GUI (使用GUIDE时需注意的几个问题)-刘磊的博文...
- JVM初探:内存分配、GC原理与垃圾收集器
- linux shell 当前用户名,在Linux中使用Whoami命令显示当前登录用户名称及替代命令的方法...
- I,P,B帧和PTS,DTS的关系 转载
- ResNet网络理解
- VScode Latex 拼写检查
- android流量监控步骤_Android流量监控_5种Android流量控制方法_飞翔教程
- Readiris Pro 17 for Mac(光学识别OCR软件)
- ExecutorService等待线程完成后优雅结束
- KingabseES 锁机制
- PullToRefreshListView刷新2
- 移动端性能专项测试之 CPU
- 第10章应对日常生活中的稀缺
- java mye,JAVA-MyEclipse第一个实例
- 区块链开发的权威指南
- 解决excel数据透析表计算类型没有非重复计数选项
热门文章
- linux搭建windows无盘系统,linux下无盘系统的安装
- win98万能显卡驱动_win98万能显卡驱动-万能显卡驱动精灵
- @Transactional注解下,Mybatis循环取序列的值,但得到的值都相同的问题
- 使用 sublime数组转换成逗号分割文本
- Java精品项目第33期前台展示+后台管理结合的在线购书系统
- vb中查询mysql_vb数据库查询语句-vb中使用sql语句-vb读取sql语句的字段
- 我的世界怎么修改服务器文本,《我的世界手机版》如何修改界面文本 自定义语言教程...
- Java常见gis开源框架,开源gis大全java
- 回顾jvisualvm安装插件简单操作
- R语言数据接口(下载、读取、写入)