Nginx介绍
Nginx一是一款轻量级的、高性能的HTTP、反向代理服务器,具有很高的稳定性、支持热部署、模块扩展也非常容易。Nginx采取了分阶段资源分配技术,处理静态文件和无缓存的反向代理加速,实现了负载均衡和容错,在这样高并发的访问情况下,能经受起高并发的处理。可以做web服务器、反向代理服务器、电子邮件服务器限制正常用户的请求范围(下载速度、访问频率)过滤非正常用户的http请求。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip灯功能。
特点
占用内存小,并发能力强。Nginx在方向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx支持热部署。
功能
反向代理:在这个级别可以做好多好多的事情;
负载均衡:构建一套应用层的负载均衡 减少业务服务器的压力;
nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
nginx的upstream目前支持的5种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
IP hash算法,对客户请求的ip进行hash操作,然后根据hash结果将同一客户端ip的请求分发给同一台服务器进行处理,
可以解决session不共享的问题。
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间
安全防护:控制请求方法(get/post/head) 构建爬虫防空工程,防止SQL注入 突发流量限制 黑白名单机制;
资源缓存:设置客户端缓存、代理缓存、nginx+memcached页面缓存,减少业务服务器的压力;
动静分离:实现动态请求与静态请求分离;
限流:限制正常用户的请求次数 限制IP的请求次数、频率 限制资源的下载次数;
分流:正常用户指向正常的业务服务器 非正常用户指向指定的服务器;
虚拟主机 :服务器资源不足情况下,作为虚拟主机使用;
Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架处理。