nginx知识问答

1、请解释一下什么是Nginx?
  答:Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。
2、请列举Nginx的一些特性?
  答:Nginx服务器的特性包括: 

     1)反向代理/L7负载均衡器 

     2)嵌入式Perl解释器 

     3)动态二进制升级 

     4)可用于重新编写URL,具有非常好的PCRE支持

3、nginx和apache的区别?
   1)轻量级,同样起web 服务,比apache 占用更少的内存及资源

   2)抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能

   3)高度模块化的设计,编写模块相对简单 

   4)最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

4.nginx是如何实现高并发的
  答:一个主进程,多个工作进程,每个工作进程可以处理多个请求,每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker继续处理其他请求,而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。由于web server的工作性质决定了每个request的大部份生命都是在网络传输中,实际上花费在server机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即@skoo所说的webserver刚好属于网络io密集型应用,不算是计算密集型。
5、请解释Nginx如何处理HTTP请求。
  答:Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并进行处理。单个线程可以提供数万个并发连接。
6、在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
  答:只需将请求删除的服务器就可以定义为: 

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

7、 使用“反向代理服务器”的优点是什么?
  答:反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用web托管服务时。
8、请列举Nginx服务器的最佳用途。
  答:Nginx服务器的最佳用法是在网络上部署动态HTTP内容,使用SCGI、WSGI应用程序服务器、用于脚本的FastCGI处理程序。它还可以作为负载均衡器。
9、请解释Nginx服务器上的Master和Worker进程分别是什么?
答: 

  Master进程:读取及评估配置和维持 

  Worker进程:处理请求

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

Like server {
listen 81;
}
11、请解释是否有可能将Nginx的错误替换为502错误、503?
  答: 502 =错误网关 503 =服务器超载 有可能,但是您可以确保fastcgi_intercept_errors被设置为ON,并使用错误页面指令。 

Location / { fastcgi_pass 127.0.01:9001; fastcgi_intercept_errors on; error_page 502 =503/error_page.html; #… }
12、在Nginx中,解释如何在URL中保留双斜线?
  答:要在URL中保留双斜线,就必须使用merge_slashes_off; 

   语法:merge_slashes [on/off] 

   默认值: merge_slashes on 

   环境: http,server

13、请解释ngx_http_upstream_module的作用是什么?
  答:ngx_http_upstream_module用于定义可通过fastcgi传递、proxy传递、uwsgi传递、memcached传递和scgi传递指令来引用的服务器组。
14、请解释什么是C10K问题?
  答:C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。
15、请陈述stub_status和sub_filter指令的作用是什么?
  答: 1)Stub_status指令:该指令用于了解Nginx当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数   2)Sub_filter指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据

16、解释Nginx是否支持将请求压缩到上游?
  答:您可以使用Nginx模块gunzip将请求压缩到上游。gunzip模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。
17、解释如何在Nginx中获得当前的时间?
  答:要获得Nginx的当前时间,必须使用SSI模块、$date_gmt和$date_local的变量。Proxy_set_header THE-TIME $date_gmt;
18、用Nginx服务器解释-s的目的是什么?
  答:用于运行Nginx -s参数的可执行文件。
19、解释如何在Nginx服务器上添加模块?
  答:在编译过程中,必须选择Nginx模块,因为Nginx不支持模块的运行时间选择。
20、 nginx负载均衡的算法怎么实现的

 (1)nginx 的 upstream目前支持 4 种方式的分配 

  1)、轮询(默认) 
        每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 
  2)、weight 
        指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 
  3)、ip_hash 
        每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  
     4)、fair(第三方) 
        按后端服务器的响应时间来分配请求,响应时间短的优先分配。  
  5)、url_hash(第三方)

    (2)nginx内置策略包含加权轮询和ip hash

  加权轮询算法分为先深搜索和先广搜索,那么nginx采用的是先深搜索算法,即将首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始将请求分给下一个高权重的机器;

21、Nginx是如何处理一个请求的呢?
    首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面
    先初始化好这个监控的socket,再进行listen
    然后再fork出多个子进程出来,  子进程会竞争accept新的连接。

    此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后

    此时,某一个子进程会accept成功,然后创建nginx对连接的封装,即ngx_connection_t结构体
    接着,根据事件调用相应的事件处理模块,如http模块与客户端进行数据的交换。

    最后,nginx或客户端来主动关掉连接,到此,一个连接就寿终正寝了

22、nginx为什么不使用多线程?

  Apache: 创建多个进程或线程,而每个进程或线程都会为其分配cpu和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会榨干服务器资源。

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

23、如何解决惊群现象?

  惊群是多个子进程在同一时刻监听同一个端口引起的;

  Nginx解决方法:同一个时刻只能有唯一一个worker子进程监听web端口,此时新连接事件只能唤醒唯一正在监听端口的worker子进程。

  采用锁,互斥量实现!!

转载于:https://www.cnblogs.com/ivy-zheng/p/10992144.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HashMap如何在Java中工作

面试中最常见的问题是“ HashMap如何在Java中工作”,“ HashMap的获取和放置方法如何在内部工作”。 在这里,我试图通过一个简单的示例来解释内部功能。 而不是理论,我们将首先从示例开始,以便您更好地理解,然后我们将…

input上传文件个数控制

HTML: 1 <h3>请上传[2,5]个文件</h3>2 <form action"" enctype"multipart/form-data">3 <input type"file" name"file" multiple"multiple" id"file" onchange"fileCo…

构造方法的格式

Student.java /* 构造方法作用概述:给对象的数据进行初始化* * 1.构造方法的方法名和类名相同* 2.构造方法不能写void ,没有返回值类型* 3.没有具体的返回值* * 构造方法的注意事项:* A:如果我们没有给出构造方法&#xff0c;系统将会提供一个默认的无参构造方…

东北农业大计算机排名,黑龙江高校排名更新,东北林大排名第3,东油排名第8...

东北地区的经济发展起步比较早&#xff0c;属于我国的老牌重工业基地&#xff0c;被称为“新中国工业的摇篮”&#xff0c;是我国最重要的经济支柱。这里的高校也因此而受到重视&#xff0c;为日后的发展奠定了扎实的基础&#xff1b;随着国家经济重心的转移&#xff0c;因为地…

打印控件

Visual Basic - 第三方控制Visual Basic - 打印与报表Visual Basic - DBGrid 现在几乎所有数据库表格控件(除了VB自身的DBGrid)都带有打印和预览功能&#xff0c;象True DBGrid Pro(http://www.componentone.com/)、Farpoint Spread(http://www.fpoint.com/)、Janus Grid和国产…

实现sessionfilter_session应用--采用filter和session实现简单用户权限控制

前面有讲到一些session的基础知识点&#xff0c;这里那我们就将session和filter做结合&#xff0c;实现一个简单地应用处理用于一般后端管理程序的权限控制&#xff01;①我们先建立一个filter的实现类SecurityServlet&#xff0c;简单代码如下&#xff1a;import java.io.IOEx…

开博语

犹记那年雁归&#xff0c;黄叶纷飞&#xff1b;独立平房女儿墙&#xff0c;也装欢喜悲凉&#xff1b; 而今蝉鸣初夏&#xff0c;毕业无话&#xff1b;四年弹指一挥间&#xff0c;总是回首不堪。 点点滴滴写此处&#xff0c;昼夜行路。转载于:https://www.cnblogs.com/iloveww/p…

150个Java面试问答-最终清单(PDF下载)

我们的Java面试问题和答案集合全都涉及可以在Java面试中使用的不同类型的问题&#xff0c;以使雇主可以测试您在Java和面向对象编程方面的技能。 在以下各节中&#xff0c;我们将讨论有关面向对象编程及其特性的Java面试问题&#xff0c;有关Java及其功能的一般问题&#xff0…

计算机电子电路原理图,简单电路图入门-电路原理图入门知识图解

简单电路图入门-电路原理图入门知识图解电路图的分类简单电路图入门&#xff0c;常遇到的电子电路图有原理图、方框图、装配图和印版图等。1、原理图原理图就是用来体现电子电路的工作原理的一种电路图&#xff0c;又被叫做“电原理图”。这种图由于它直接体现了电子电路的结构…

老是不中,算了算“双色球”和“3D”,全买到底要多少¥¥。。(C 代码)

最近也做发财梦&#xff0c;买了段时间得彩票&#xff0c;不得要领&#xff0c;今天写了两个小程序&#xff0c;算算把所有号码组合都买下到底要多少&#xffe5;&#xffe5;。。还是先贴个规则吧&#xff1b;双色球&#xff1a;从 1~33 中选6个不重复得数值&#xff08;红球&…

pycharm 中 import requests 报错

一 , 使用Pycharm来抓取网页的时候&#xff0c;要导入requests模块&#xff0c;但是在pycharm中 import requests 报错。 原因&#xff1a; python中还没有安装requests库 解决办法&#xff1a; 1.先找到自己python安装目录下的pip 2.在自己的电脑里打开cmd窗口。先点击开始栏&…

监控mysql锁定状态_MySQL 锁的监控及处理

故障模拟# 添加两项配置vi /etc/my.cnf[mysqld]autocommit0innodb_lock_wait_timeout 3600systemctl restart mysqld# 登录数据库use klvchen;UPDATE t1 SET k1av WHERE id1;# 新开一个窗口&#xff0c;再登录数据库use klvchen;UPDATE t1 SET k1az WHERE id1;# 此时页面卡住(…

dell 计算机硬盘保护,dell台式机硬盘保护 怎样取消

工具/原料十字型螺丝刀一把新台式机硬盘一块方法/步骤1.把新购置的硬盘拆开&#xff0c;以备后面使用&#xff1a;2.拆下机箱的侧面板&#xff0c;注意&#xff0c;侧面板有两颗螺丝固定&#xff0c;需要先卸下&#xff0c;之后向一侧方向拉出侧面板就可以了&#xff0c;拆下侧…

安全建设之平台搭建

一、信息搜集类 基础信息 基础信息搜集包括ip&#xff0c;域名&#xff0c;端口&#xff0c;框架&#xff0c;组件信息。Ip、域名甲方可通过运维同事获取&#xff0c;其他获取方式仁者见仁智者见智。端口&#xff0c;需要我们根据获取的域名、ip进行端口扫描&#xff0c;这里推…

BSTR、char*和CString转换

BSTR、char*和CString转换 (1) char*转换成CString 若将char*转换成CString&#xff0c;除了直接赋值外&#xff0c;还可使用CString::Format进行。例如&#xff1a; char chArray[] "This is a test"; char * p "This is a test"; 或 LPSTR p "T…

Java 8的8个新功能

注意&#xff1a;确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide 。 Jdk 1.8&#xff08;又名Java 8&#xff09;今天发布&#xff0c;这意味着它的通用发布版本已经公开发售&#xff0c;开发人员可以从早期发布版本切换到经过测试的版本以供生产使用。 但是&a…

第四章 生命周期函数--35 vue-resource发起get、post、jsonp请求

vue-resource 官网 https://github.com/pagekit/vue-resource 1 <!DOCTYPE html>2 <html lang"en">3 4 <head>5 <meta charset"utf-8">6 <meta name"viewport" content"widthdevice-width,initial-sc…

html边框为框,HTML 为元素设置边框

属性&#xff1a;border&#xff0c;可以为元素这是上右下左四条边框(顺序很重要)取值有三个&#xff1a;1.border-width:边框宽度&#xff0c;默认3px&#xff0c;可以手动设置&#xff0c;取像素值2.border-style:边框样式&#xff0c;必填项。可取&#xff1a; solid (实线边…

nginx配置返回文本或json

有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串&#xff0c;如果逻辑非常简单或者干脆是固定的字符串&#xff0c;那么可以使用nginx快速实现&#xff0c;这样就不用编写程序响应请求了&#xff0c;可以减少服务器资源占用并且响应性能非常快 如果要返回固…

Enterprise Library Step By Step系列(十一):异常处理应用程序块——入门篇

Enterprise Library Step By Step系列&#xff08;十一&#xff09;&#xff1a;异常处理应用程序块——入门篇 作者&#xff1a;Terrylee 一&#xff0e;概述 使开发人员和决策人员能够针对发生在企业应用程序体系结构层的异常处理创建一致的策略。它的实现方法如下&#xff1…