整理了45道Nginx面试,看看你都会几题。
1:你知道的web服务有哪些?
阿帕奇,恩吉克斯,互联网信息服务,汤姆猫,轻量级HTTP服务器,WebLogic。
2:为什么要用nginx?
处理两万到三万,并发连接数情况,跨平台,配置简单,非阻塞,高并发连接特性,官方监测表明其可支持五万并发。
内存消耗微小得很:开启10个nginx,其所占据内存仅为150M,另外,nginx在处理静态文件范畴方面表现出色,且耗费的内存数量少之又少。
那种被内置的健康检查功能,一旦存在某个服务器出现宕机的情况,就会动手去做一次健康检查,而后再发送的请求,便不会被发送到已然宕机的那个服务器上。
实现宽带节省,其具备支持GZIP压缩这一特性,可以增添浏览器本地缓存;展现出高稳定性,即出现宕机情况的概率极小;接收用户请求呈现出异步的状态。
3:nginx的性能为什么比apache高?
nginx所采用的是epoll模型,以及kqueue网络模型,然而apache所采用的却是select模型。
选定版宿管大妈会将你的朋友逐个房间地带去寻,一直找寻到你才中止。而事件轮询版宿管大妈会先把每位同学住在何处的房间号给记录下来,当你的朋友到来之时只需要告知你的朋友你所住的那个房间是哪里就行。在高并发的服务器当中,轮询输入输出是最为耗费时间的操作当中的一个。
4:epoll的组成
epoll的接口非常简单,一共就三个函数:
创建的是一个epoll的句柄,大小是通过size来告知内核这个监听的数目总共究竟有多大的,int epoll_create(int size); ,调用时要先注册要监听的事件类型的,是epoll的事件注册函数,即int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);。op借助三个宏予以表示,一个是EPOLL_CTL_ADD,其作用是注册新的fd,一个是EPOLL_CTL_MOD,它用于修改已经注册的fd的监听事件,还有一个是EPOLL_CTL_DEL,此为从epfd中删除一个fd。int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout); 该函数用于等待事件的产生。5:nginx与apache有着不同。并且、关于nginx和apache的区别 ,这是要阐述的内容。
轻量级的Nginx,是采用C编写而成的,它能占用更少的内存以及资源,具备抗并发能力,是以epoll和kqueue作为开发模型的,其处理请求属于异步非阻塞的,处理静态文件的表现良好,静态处理性能比apache要高出三倍以上,设计呈现高度模块化,配置较为简洁,支持7层负载均衡,能够有效防止ddos攻击,本身就是反向代理服务器。
啊怕切:瑞写特比起恩金克斯可要强大许多,模块数量超多,更为成熟,出现的错误少之又少,对于PHP的支持呀相对而言比较简易,应对动态请求具备优势。
对两者来讲,最为关键的区别在于这样一点,那就是apache它属于同步多进程模型,具体表现为一个连接会对应一个进程,然而nginx却与之不一样,它是异步的,存在这种情形,即多个连接(达到万级别数量)能够对应一个进程。要是需要稳定性则选用apache,要是需要高性能那就选用nginx。
6:nginx常常会用到的命令,7:怎样反向实施代理,如何正向进行代理,以及它们之间存在着怎样的区别呢?
正向代理,是那种得在用户端进行配置的,配置好了之后才能够去访问具体的服务,它实际上就是让代理服务器代替客户端,进而与目标服务器展开交互,其具有提高访问速度以及隐藏客户真实IP这样的用途。
反向代理,是处于服务端的那种,其情况不用用户去关心访问。当用户对服务器A进行访问时,A服务器作为代理服务器,会把用户的服务进一步转发至服务器B。它所具备的作用有缓存,还有负载均衡以及访问控制。
8:Squid、Varnish、Nginx有什么区别?
能实现缓存服务器作用的有三者,Nginx原本乃是反向代理/web服务器,借助插件可充当缓存服务器,然而其自身所支持的特性并不多,仅仅能够缓存静态文件。Varnish与Squid属于专业的cache服务,而nginx得运用第三方模块。Varnish在本身技术方面的优势相比Squid更高,它运用了可视化页面缓存技术。
9:nginx是如何处理http请求的?
首先,Nginx启动之际,会解析那配置文件,从中获取所需监听的端口以及IP地址,而后在Nginx的Master进程里,会先将这个监控的Socket初始化(创建Socket,设定addr、reuse等选项,再 binds到既定的ip地址端口,接着进行listen监听)。然后,会fork出多个子进程。之后,这些子进程会竞争accept新的连接。客户端与nginx完成三次握手后,建立好与nginx的一个连接,此时某一个子进程accept成功,获取到该建立好连接的Socket,接着创建nginx对连接的封装,也就是ngx_connection_t结构体,随后设置读写事件处理函数,并添加读写事件以便与客户端进行数据交换,最后由Nginx或者客户端主动关掉连接。
要作答亦可对应按这四个步骤来:读取并解析请求行,读取并解析请求头,多阶段处理。此多阶段处理乃是nginx把请求处理划分成了11个阶段,最后将结果返回给客户端。
10:nginx虚拟主机有哪些?
借助域名构建的虚拟主机,依靠端口搭建的虚拟主机,凭借IP设立的虚拟主机。
11:nginx怎么实现后端服务的健康检查?
方式一:借助nginx自身所带的模块ngx_http_proxy_module以及ngx_http_upstream_module,来针对后端节点开展健康检查。方式二:凭借。
对后端节点做健康检查的是nginx_upstream_check_module模块,此方法被推荐。

12,apache里的Worker和Prefork二者之间的区别是啥呢?
无一不是MPM,于Prefork MPM里,有一个主httpd进程被开启,此主进程会对所有其余子进程加以管理,从而为客户端请求供给服务,然而在Worker MPM中,一旦一个httpd进程被触发,便会运用各异的线程来为客户端请求予以服务,Prefork MPM运用多个子进程,每个进程配一个线程,Worker MPM运作多个子进程,每个进程携多个线程。Prefork MPM会占用那种庞大的内存,然而Worker占用的是更小一些的内存。
13:nginx的优化你都做过哪些?
配置文件中优化效果明显的参数:
14:nginx的session不同步怎么办?
这个问题,可借助ip_hash指令予以解决,要是客户已然访问过某一服务器,待用户再度进行访问之际,会凭借哈希算法将该请求自动定位至该服务器,也就是说,会让每个访客恒定地访问同一个后端服务器,如此便能够解决session的问题,另外还有别的办法,即运用spring_session+redis,去把session放置到缓存当中来达成session共享。
15:nginx的常用模块有哪些?核心http参数配置的ngx_http_core_module,访问控制模块的ngx_http_access_module,压缩模块的ngx_http_gzip_module,FastCGI模块的ngx_http_fastcgi_module,Proxy代理模块的ngx_http_proxy_module,负载均衡模块的ngx_http_upstream_module,URL地址重写模块的ngx_http_rewrite_module,限制并发连接数及请求数模块的ngx_http_limit_conn_module,限制请求速率的ngx_http_limit_req_module,访问日志模块的ngx_http_log_module,Web认证模块的ngx_http_auth_basic_module,ssl模块的ngx_http_ssl_module,记录访问状态信息模块的ngx_http_stub_status_module,nginx常用状态码的16,nginx各个版本区别的17。
主流版本:Nginx当前主要着力去做的版本,可算作开发版;稳定版本:最新的稳定的版本,是在生产环境上被建议去使用的版本;遗留版本:留下来的老的稳定的版本。
18:关于nginx access模块的配置
编写一个Nginx的access模块,它应使得,只有这些机器可以访问,那就是,192.168.3.29这个机器所在的/24网段,还有,10.1.20.6这个机器所在的/16那个整段网段内的所有机器能访问,并且,34.26.157.0这个机器所在其中的/24这个网段也能访问,而除此之外的其他任何机器都不准获得访问许可。
location/{
access 192.168.3.29/24;
access 10.1.20.6/16;
access 34.26.157.0/24;
deny all;
}
19:nginx默认配置文件结构
nginx的配置文件里,大致分成几个区域:events {},http {},还有没被{}包住的区域,http {}里又有server {},何况server {}当中含有location {},没被{}包裹起来的部分是全局配置,events {}是nginx连接配置的模块,http {}是nginx http核心配置模块,server {}是虚拟主机配置模块,location {}是URI匹配。
20:location的规则
通常,在Nginx的配置文件里,设置时一般会采用两个常见的区块(Block),即Server区块,还有Location区块。
关于Location配置项那儿的optional_modifier配置。
nginx处理location区块时,顺序是这样的:首先进行前缀式匹配,然后依据URI去寻找那种完全匹配(=),接着匹配^~配置,再接着是大小写敏感的正则匹配,最后是大小写不敏感的正则匹配。
21:配置nginx防盗链
Nginx的防盗链原理是,加入location项,并用正则表达式过滤图片类型文件,对于信任的网址,可正常使用,对于不信任的网址,返回相应的错误图片。
location ~*.(jpg|gif|swf)$ {
valid_referers none blocked *.test.com test.com;
if ($invalid_referer) {
rewrite ^/http://www.bt.com/error.png;
}
}
22:nginx实现负载均衡的分发策略
Nginx的upstream目前支持的分配算法:
轮询(默认情况):每一个请求依照时间先后顺序逐个分配至不一样的应用服务器,权重方面:借助配置权重,去指定轮询几率,权重与访问比率呈现成正比关系,ip_hash:每一个请求依据访问ip的hash结果来分配,用于解决session共享问题,fair(第三方插件):按照后端服务器的响应时间来分配请求,url_hash(第三方插件):依据访问url的hash结果去分配请求,23:nginx做负载均衡会应用到哪些模块?
upstream部分:负责定义负载节点池,location模块:开展URL匹配工作,proxy模块:将请求发送给upstream所定义的节点池。
24:nginx如何实现四层负载?
存在着四层负载,其被划分成动态负载与静态负载这两种类型。就Nginx的四层静态负载均衡而言,它需要启用ngx_stream_core_module模块,在默认情形下,此模块并未被启用,并且需要在安装Nginx的时候添加--with-stream配置参数来将其启用。而配置四层负载均衡的操作是在stream指令之下进行的。
补充关于25:nginx跟apache之间的区别,Nginx哪一些主要应用的场景呢,有http服务器,其能够当作网页静态服务器,虚拟主机,能够达成在一台服务器上面虚出多个网站,正反代理,具备负载均衡或者加速的作用,那么Nginx HTTP连接和请求有着怎样的关系呢?
HTTP是构建于TCP之上的,单次HTTP请求,得先去建立TCP三次握手,这又被称作TCP连接,然后,是在这个连接的基础之上,再去做HTTP请求。HTTP请求是基于一次TCP连接而存在的,对于HTTP会话这个情况而言,一次TCP连接能够建立起多次HTTP请求。
28号,Nginx所支持的访问控制方式是哪些呢?29号是,Nginx的Master进程以及Worker节点吗?

CopyrightC 2009-2025 All Rights Reserved 版权所有 芜湖人才网 本站内容仅供参考,不承担因使用信息、外部链接或服务中断导致的任何直接或间接责任,风险自担。如有侵权,请联系删除,联系邮箱:ysznh@foxmail.com 鄂ICP备2025097818号-15
地址: EMAIL:qlwl@foxmail.com
Powered by PHPYun.