`
m17165851127
  • 浏览: 15047 次
文章分类
社区版块
存档分类
最新评论

Nginx 如何工作 负载均衡策略有哪些 如何限流

 
阅读更多

3、所有 worker 进程的 listenfd 会在新连接到来时变得可读 ,为保证只有一个进程处理该连接,所有 worker 进程在注册 listenfd 读事件前抢占 accept_mutex ,抢到互斥锁的那个进程注册 listenfd 读事件 ,在读事件里调用 accept 接受该连接。
4、当一个 worker 进程在 accept 这个连接之后,就开始读取请求、解析请求、处理请求,产生数据后,再返回给客户端 ,最后才断开连接。

5、Nginx 常用命令有哪些(java项目fhadmin.cn)?
启动 nginx 。
停止 nginx -s stop 或 nginx -s quit 。
重启 nginx -s reload 或 service nginx reload 。
重载指定配置文件 .nginx -c /usr/local/nginx/conf/nginx.conf 。
查看 nginx 版本 nginx -v 。
6、nginx中500、502、503、504 有什么区别?
500:

Internal Server Error 内部服务错误,比如脚本错误,编程语言语法错误。

502:

Bad Gateway错误,网关错误。比如服务器当前连接太多,响应太慢,页面素材太多、带宽慢。

503:

Service Temporarily Unavailable,服务不可用,web服务器不能处理HTTP请求,可能是临时超载或者是服务器进行停机维护。

504:

Gateway timeout 网关超时,程序执行时间过长导致响应超时,例如程序需要执行20秒,而nginx最大响应等待时间为10秒,这样就会出现超时。

7、Nginx 压缩了解吗,如何开启压缩?
开启nginx gzip压缩后,图片、css、js等静态资源的大小会减小,可节省带宽,提高传输效率,但是会消耗CPU资源。

开启:

#?开启gzip
gzip?off;

#?启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length?1k;

#?gzip?压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
gzip_comp_level?1;

#?进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
gzip_types?text/plain?application/javascript?application/x-javascript?text/css?application/xml?text/javascript?application/x-httpd-php?image/jpeg?image/gif?image/png?application/vnd.ms-fontobject?font/ttf?font/opentype?font/x-woff?image/svg+xml;

8、Nginx 和 Apache、Tomcat 之间的不同点
1、Nginx/Apache 是Web Server,而Apache Tomact是一个servlet container
2、tomcat可以对jsp进行解析,nginx和apache只是web服务器,可以简单理解为只能提供html静态文件服务。

Nginx和Apache区别(java项目fhadmin.cn):

1)Nginx轻量级,同样起web 服务,比apache占用更少的内存及资源 。

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

3)Nginx提供负载均衡,可以做做反向代理,前端服务器

4)Nginx多进程单线程,异步非阻塞;Apache多进程同步,阻塞。

9、Nginx 有哪些负载均衡策略
Nginx 默认提供的负载均衡策略:

1、轮询(默认)round_robin
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

2、IP 哈希 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 共享的问题。

当然,实际场景下,一般不考虑使用 ip_hash 解决 session 共享。

3、最少连接 least_conn
下一个请求将被分派到活动连接数量最少的服务器

4、权重 weight
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下,达到合理的资源利用率。

还可以通过插件支持其他策略。

10、Nginx动静态资源分离做过吗,为什么要这样做?
动态资源、静态资源分离,是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来 路。

比如说 js、css、hrml从A服务器返回。图片 从B服务器返回,其他请求从Tomcat服务器C返回。

后台应用分开部署,提高用户访问静态代码的速度。而且现在还有CDN服务,不需要限制于服务器的带宽。

11、ngx_http_upstream_module模块了解吗?
ngx_http_upstream_module模块用于将多个服务器定义成服务器组,可通过fastcgi传递、proxy传递、uwsgi传递、memcached传递和scgi传递指令来引用的服务器组。

比如访问www.a.com 缓存+调度:

http{
proxy_cache_path?/var/cache/nginx/proxy_cache?levels=1:2:2?keys_zone=proxycache:20m?inactive=120s?max_si?#缓存
ze=1g;
upstream?mysqlsrvs{
ip_hash;?#源地址hash调度方法?写了backup就不可用
server?172.18.99.1:80?weight=2;?#weight权重
server?172.18.99.2:80;??????????#标记down,配合ip_hash使用,实现灰度发布
server?172.18.99.3:80?backup;???#backup将服务器标记为“备用”,即所有服务器均不可用时才启用?
}
}
server{
server_name?www.a.com;
proxy_cache?proxycache;
proxy_cache_key?$request_uri;
proxy_cache_valid?200?302?301?1h;
proxy_cache_valid?any?1m;
location?/?{
proxy_pass? http://mysqlsrvs;
}
}

12、限流了解吗,怎么限流的?
Nginx 提供两种限流方式,一是控制速率,二是控制并发连接数。

1、控制速率
ngx_http_limit_req_module?模块提供了漏桶算法(leaky bucket),可以限制单个IP的请求处理频率。

如:

1.1 正常限流:

http?{
limit_req_zone?192.168.1.1?zone=myLimit:10m?rate=5r/s;
}

server?{
location?/?{
limit_req?zone=myLimit;
rewrite?/? http://fhadmin.cn?permanent;
}
}

参数解释:

key:?定义需要限流的对象。
zone:?定义共享内存区来存储访问信息。
rate:?用于设置最大访问速率。

表示基于客户端192.168.1.1进行限流,定义了一个大小为10M,名称为myLimit的内存区,用于存储IP地址访问信息。

rate设置IP访问频率,rate=5r/s表示每秒只能处理每个IP地址的5个请求。

Nginx限流是按照毫秒级为单位的,也就是说1秒处理5个请求会变成每200ms只处理一个请求。如果200ms内已经处理完1个请求,但是还是有有新的请求到达,这时候Nginx就会拒绝处理该请求。

1.2 突发流量限制访问频率

上面rate设置了?5r/s,如果有时候流量突然变大,超出的请求就被拒绝返回503了,突发的流量影响业务就不好了。

这时候可以加上burst?参数,一般再结合?nodelay?一起使用。

server?{
location?/?{
limit_req?zone=myLimit?burst=20?nodelay;
rewrite?/? http://fhadmin.cn?permanent;
}
}

burst=20 nodelay?表示这20个请求立马处理,不能延迟,相当于特事特办。不过,即使这20个突发请求立马处理结束,后续来了请求也不会立马处理。

burst=20?相当于缓存队列中占了20个坑,即使请求被处理了,这20个位置也只能按100ms一个来释放。

2、控制并发连接数
ngx_http_limit_conn_module?提供了限制连接数功能。

limit_conn_zone?$binary_remote_addr?zone=perip:10m;
limit_conn_zone?$server_name?zone=perserver:10m;

server?{
...
limit_conn?perip?10;
limit_conn?perserver?100;
}

limit_conn perip 10?作用的key 是?$binary_remote_addr,表示限制单个IP同时最多能持有10个连接。

limit_conn perserver 100?作用的key是?$server_name,表示虚拟主机(server) 同时能处理并发连接的总数。

注:limit_conn perserver 100?作用的key是?$server_name,表示虚拟主机(server) 同时能处理并发连接的总数。

拓展:
如果不想做限流,还可以设置白名单:

利用 Nginx?ngx_http_geo_module?和?ngx_http_map_module?两个工具模块提供的功能。

##定义白名单ip列表变量
geo?$limit?{
default?1;
10.0.0.0/8?0;
192.168.0.0/10?0;
81.56.0.35?0;
}

0
0
分享到:
评论

相关推荐

    Nginx入门到精通搭建高可用集群负载均衡

    Nginx 负载均衡策略** - **轮询**:每个请求按顺序分配,down 掉的服务器会被自动剔除。 - **权重分配**:根据服务器性能分配不同比例的请求。 - **IP Hash**:基于客户端 IP 的哈希结果分配,确保同一客户端...

    分布式限流面试专题系列:Nginx+zookeeper.zip

    本专题将深入探讨Nginx与Zookeeper结合实现的分布式限流策略,帮助理解如何在面试中有效地展示这方面的知识。 1. **Nginx**:Nginx是一款高性能的HTTP和反向代理服务器,广泛用于负载均衡、缓存和安全防护等场景。...

    Nginx基础架构与工作原理+Nginx安装与配置环境搭建+Nginx核心配置指令详解+Nginx反向代理与负载均衡技术等教程

    Nginx反向代理与负载均衡技术 Nginx缓存机制与优化 Nginx日志管理与分析 Nginx安全防护策略 Nginx与HTTPS配置实践 Nginx限流与防盗链设置 Nginx动静分离与媒体处理 Nginx邮件服务器配置 Nginx模块开发与自定义 Nginx...

    分布式限流面试专题系列:Nginx+zookeeper.rar

    Nginx是一款广泛使用的反向代理服务器和负载均衡器,它支持多种限流策略。例如,Nginx的`limit_req`模块可以实现基于滑动窗口的平均速率限流,通过设置`rate`参数来限制每秒请求数。此外,还可以通过`zone`定义共享...

    web服务器如何限流-nginx,tomcat服务器如何限制流量

    Nginx以其高效的反向代理和负载均衡能力而闻名,同时也提供了内置的限流模块。通过修改`nginx.conf`配置文件,我们可以设置连接速率限制和请求速率限制。例如,可以在`http`、`server`或`location`块中添加以下指令...

    基于Redis缓存数据库和Nginx负载均衡技术的购物网站性能优化.docx

    【基于Redis缓存数据库和Nginx负载均衡技术的购物网站性能优化】 随着互联网的快速发展,电子商务已经成为人们日常生活的重要组成部分。购物网站的性能优化对于提供流畅的用户体验和支撑大规模并发访问至关重要。本...

    Nginx高性能Web服务器详解(完整版)pdf下载

    常见的负载均衡策略有轮询、权重、最少连接数等。 5. **静态文件处理**:Nginx在处理静态文件如HTML、CSS、JavaScript、图片等资源时非常高效,能有效减轻应用服务器的压力。 6. **URL重写**:Nginx支持URL重写...

    基于Redis实现分布式应用限流的方法

    一种是在Nginx等负载均衡器层面进行限流,根据账号、IP地址或系统调用逻辑设定规则。另一种是在业务应用系统内部实现限流,通过代码控制流量,即使用信号量机制来限制对共享资源的并发访问。 以下是一个基于Redis的...

    LINUX-nginx

    3. **负载均衡**:Nginx可以对多台后端服务器进行负载均衡,通过轮询、最少连接数、IP哈希等策略分发请求,提高系统的可用性和响应速度。 4. **HTTP缓存**:Nginx支持HTTP缓存功能,能够缓存经常访问的静态资源,...

    nginx安装文件

    负载均衡策略主要有以下几种: 1. **轮询(Round Robin)**:默认策略,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2. **权重轮询(Weighted Round Robin)**:为每台...

    nginx负载/代理

    2. **Nginx 负载均衡策略**: - **轮询(round-robin)**:默认策略,每个请求按顺序分配到不同的服务器。 - **最少连接(least connections)**:将新请求分配给当前连接数最少的服务器。 - **IP哈希(ip_hash)...

    流量守卫:Nginx中实现限流的策略与实践

    2. **反向代理服务器**:Nginx能够作为反向代理服务器,将客户端的请求转发到后端的多个服务器上,从而实现负载均衡。 3. **静态内容服务**:Nginx非常适合于提供静态内容,如图片、视频和HTML页面。 4. **SSL/TLS...

    nginx-1.17.9_nginx_

    3. **负载均衡**:Nginx 提供了多种负载均衡策略,如轮询、权重轮询、最少连接数等,可以根据服务器的负载情况动态分配请求,确保系统的高可用性。 4. **HTTP/HTTPS 支持**:Nginx 支持 HTTP 和 HTTPS 协议,可以...

    nginx-1.9.0 文档

    通过`proxy_pass`指令可以指定后端服务器地址,配合`upstream`模块可以定义负载均衡策略,如轮询、权重分配等。 **四、静态文件服务** Nginx非常擅长处理静态文件请求,例如HTML、CSS、JavaScript等。通过简单的...

    Nginx学习电子书

    3. **反向代理**:详述Nginx作为反向代理的角色,如何分发请求到后端服务器,以及负载均衡策略,如轮询、权重分配等。 4. **负载均衡**:介绍Nginx的负载均衡机制,如何通过upstream模块实现对后端服务器的健康检查...

    nginx-1.17.4.zip

    3. **负载均衡**:Nginx 支持多种负载均衡策略,如轮询、最少连接、IP哈希等。通过`upstream`块定义一组服务器,并选择相应的负载均衡算法。 4. **静态文件处理**:Nginx 以其高效处理静态文件的能力著称。对于CSS...

    无业游民的nginx负载均衡

    【标题】"无业游民的nginx负载均衡"揭示了一个技术爱好者或自由职业者使用nginx进行网站负载均衡的实践过程。这个项目可能旨在通过利用开源工具来构建一个高效且可扩展的网络服务环境,尤其适合那些在家工作或者没有...

Global site tag (gtag.js) - Google Analytics