1、请解释一下什么是Nginx?
Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以其高性能、稳定性、丰富的功能、简单的配置和低资源消耗而闻名。
也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器 、负载均衡器和HTTP缓存。
Nginx 解决了服务器的C10K(就是在一秒之内连接客户端的数目为10k即1万)问题。它的设计不像传统的服务器那样使用线程处理请求,而是一个更加高级的机制—事件驱动机制,是一种异步事件驱动结构。
2、Nginx能做什么?
1.反向代理 2.负载均衡 3.HTTP服务器(包含动静分离) 4.正向代理
3、请列举Nginx的一些特性
-
跨平台:可以在大多数Unix like 系统编译运行。而且也有Windows的移植版本。
-
配置异常简单:非常的简单,易上手。
-
非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能支持5万并发连接,实际生产中能跑2~3万并发连接数(得益于Nginx采用了最新的epoll事件处理模型(消息队列)。
-
Nginx代理和后端Web服务器间无需长连接;
-
Nginx接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送到后端Web服务器,极大减轻后端Web服务器的压力。
-
发送响应报文时,是边接收来自后端Web服务器的数据,边发送给客户端。
-
网络依赖性低,理论上只要能够ping通就可以实施负载均衡,而且可以有效区分内网、外网流量。
-
支持内置服务器检测。Nginx能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上。
-
此外还有内存消耗小、成本低廉(比F5硬件负载均衡器廉价太多)、节省带宽、稳定性高等特点。
4、请列举Nginx和Apache 之间的不同点
5、请解释什么是C10K问题?
C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。
6、 使用“反向代理服务器”的优点是什么?
反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用web托管服务时。
7、请列举Nginx
服务器的最佳用途。
Nginx
服务器的最佳用法是在网络上部署动态HTTP
内容,使用SCGI
、WSGI
应用程序服务器、用于脚本的FastCGI
处理程序。它还可以作为负载均衡器。
8、请解释Nginx
服务器上的Master
和Worker
进程分别是什么?
Master
进程:读取及评估配置和维持
Worker
进程:处理请求
9、请解释你如何通过不同于80的端口开启Nginx?
为了通过一个不同的端口开启Nginx
,你必须进入/etc/Nginx/sites-enabled/
,如果这是默认文件,那么你必须打开名为“default”
的文件。编辑文件,并放置在你想要的端口:
Like server { listen 81; }
10、请解释是否有可能将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; #… }
11、在Nginx
中,解释如何在URL
中保留双斜线?
要在URL
中保留双斜线,就必须使用merge_slashes_off
;
语法:merge_slashes [on/off]
默认值: merge_slashes on
环境: http,server
12、请解释ngx_http_upstream_module
的作用是什么?
ngx_http_upstream_module
用于定义可通过fastcgi
传递、proxy
传递、uwsgi
传递、memcached
传递和scgi传递指令来引用的服务器组。
13、请陈述stub_status
和sub_filter
指令的作用是什么?
Stub_status
指令:该指令用于了解Nginx
当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数
Sub_filter
指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据
14、解释Nginx
是否支持将请求压缩到上游?
您可以使用Nginx
模块gunzip
将请求压缩到上游。gunzip
模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。
15、解释如何在Nginx
中获得当前的时间?
要获得Nginx的当前时间,必须使用SSI
模块、$date_gmt
和$date_local
的变量。
Proxy_set_header
THE-TIME $date_gmt
;
16、用Nginx
服务器解释-s
的目的是什么?
用于运行Nginx -s
参数的可执行文件。
17、解释如何在Nginx
服务器上添加模块?
在编译过程中,必须选择Nginx
模块,因为Nginx
不支持模块的运行时间选择。