Nginx知识点介绍

一、简介及使用场景

1.简介
Nginx是基于Http的高并发(异步),低消耗,热部署,高拓展,高可用的反向代理服务器。
注:正向代理是客户端,反向是服务器端,反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和 web 服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用 web 托管服务时。
2.使用场景
代替Apache作为http server,反向代理服务器,实现负载均衡,虚拟主机。

二、Nginx与高并发

Nginx实现高并发原理:基于事件模型。每进来一个 request ,会有一个 worker 进程去处理。处理到可能发生阻塞的地方,比如向上游(后端)服务器转发 request ,并等待请求返回。他会在发送完请求后,注册一个事件:“如果 upstream 返回了,告诉我一声,我再接着干”。于是他就休息去了。此时,如果再有 request 进来,他就可以很快再按这种方式处理。而一旦上游服务器返回了,就会触发这个事件,worker 才会来接手,这个 request 才会接着往下走。

三、Nginx负载均衡及性能优化

Nginx负载均衡策略(代理服务器将接收的请求均衡的分发到各服务器中):
1.轮询(默认)round_robin
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2.IP 哈希 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 共享的问题。
当然,实际场景下,一般不考虑使用 ip_hash 解决 session 共享。
3.最少连接 least_conn
下一个请求将被分派到活动连接数量最少的服务器。

四、Nginx性能优化

worker_proccesses(工作进程):设置为CPU的核心或者核心数x2
Work_cpu_affinity:如内核为2,工作进程为4,Work_cpu_affinity取值为01(内核1),10(内核2),01,10;内核为4时,则是0001,0010,0100,1000

五、Nginx与Apache

Apache: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存(线程要比进程小的多,所以 worker 支持比 perfork 高的并发),并发过大会榨干服务器资源。
Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置 Nginx 主进程的工作进程的数量)(epoll),不会为每个请求分配 cpu 和内存资源,节省了大量资源,同时也减少了大量的 CPU 的上下文切换。所以才使得 Nginx 支持更高的并发

六、Nginx实战操作知识

1、在 Nginx 中,如何使用未定义的服务器名称来阻止处理请求?
只需将请求删除的服务器就可以定义为:
Server {listen 80;server_name “ “ ;return 444;
}
2、请解释 Nginx 服务器上的 Master 和 Worker 进程分别是什么?
Master 进程:读取及评估配置和维持
Worker 进程:处理请求
3、请解释你如何通过不同于 80 的端口开启 Nginx?
为了通过一个不同的端口开启 Nginx,你必须进入/etc/Nginx/sitesenabled/,如果这是默认文件,那么你必须打开名为“default”的文件。编辑文件,并放置在你想要的端口:
Like server { listen 81; }
4、请解释是否有可能将 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;#…}
5、在 Nginx 中,解释如何在 URL 中保留双斜线?
要在 URL 中保留双斜线,就必须使用 merge_slashes_off;
语法:merge_slashes [on/off]
默认值: merge_slashes on
环境: http,server
6、请解释 ngx_http_upstream_module 的作用是什么?
ngx_http_upstream_module 用于定义可通过 fastcgi 传递、proxy 传递、uwsgi传递、memcached 传递和 scgi 传递指令来引用的服务器组。
7、请解释什么是 C10K 问题?
C10K 问题是指无法同时处理大量客户端(10,000)的网络套接字。
8、请陈述 stub_status 和 sub_filter 指令的作用是什么?
Stub_status 指令:该指令用于了解 Nginx 当前状态的当前状态,如当前的活
动连接,接受和处理当前读/写/等待连接的总数
Sub_filter 指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据
9、解释 Nginx 是否支持将请求压缩到上游?
您可以使用 Nginx 模块 gunzip 将请求压缩到上游。gunzip 模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。
10、解释如何在 Nginx 中获得当前的时间?
要获得 Nginx 的当前时间,必须使用 SSI 模块、 d a t e g m t 和 date_gmt 和 dategmtdate_local 的变量。
Proxy_set_header THE-TIME $date_gmt;
11、用 Nginx 服务器解释-s 的目的是什么?
用于运行 Nginx -s 参数的可执行文件。
12、解释如何在 Nginx 服务器上添加模块?
在编译过程中,必须选择 Nginx 模块,因为 Nginx 不支持模块的运行时间选
择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值