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 {
locat