Nginx 介绍
•1、高并发响应性能非常好: •
官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。
•2、内存消耗少:
在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M),内存和cpu占用率低。(为Apache的1/5-1/10)
•3、配置文件非常简单:
风格跟程序一样通俗易懂,学习成本低。
•4、成本低廉:
Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
•5、静态处理性能强:
Nginx 静态处理性能比 Apache 高 3倍以上 。
•6、内置的健康检查功能:
如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
•7、可以热部署:
在master管理进程与worker工作进程的分离设计,使的Nginx具有热部署的功能,那么在7×24小时不间断服务的前提下,升级Nginx的可执行文件。也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。
•8、稳定性高: •
用于反向代理和负载均衡,宕机的概率微乎其微。
Nginx 原理
ØNginx由内核和模块组成
内核的设计非常微小和简洁,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
ØNginx的模块从结构上分为核心模块、基础模块和第三方模块
核心模块:HTTP模块、EVENT模块和MAIL模块 2.基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块, 3.第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
ØNginx的高并发得益于其采用了epoll模型(异步非阻塞)
Select特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。
epoll的特点:epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。
讲一个找小明的例子帮助理解
配置精讲及配置优化
Nginx 的upstream目前支持5种算法分配方式:
1.轮询(默认rr)
每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台服务器down掉,自动剔除,待恢复自动添加上。
2.Weight权重
指定轮询权重,权重越高,处理的请求就越多,weight和访问比率成正比,用于后端服务器性能不均的情况。
3.ip_hash
每个请求根据访问的IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,一般用于登录会话。
4.fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5.url_hash(第三方)
upstream的 fail_timeout和max_fails参数是用来判断负载均衡upstream中的某个server是否失效。
ip_hash是根据ip来维持session的,而url_hash是根据url地址的,url_hash的优点是能够提高后端缓存服务器的效率,比如提高squid的效率,但是缺点是当后端服务器宕机的时候,url_hash不会自动跳转的其他缓存服务器,而是返回给用户一个503错误。
什么是nginx rewrite 功能 ?
Rewrite规则含义就是某个URL重写成特定的URL,从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等。
last :相当于Apache里的(L)标记,表示完成rewrite;
break;本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
last和break用来实现URL重写,浏览器地址栏URL地址不变。
*代表前面0或更多个字符
+代表前面1或更多个字符
?代表前面0或1个字符
^代表字符串的开始位置
$代表字符串结束的位置
。为通配符,代表任何字符
last :相当于Apache里的(L)标记,表示完成rewrite;
break;本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
last和break用来实现URL重写,浏览器地址栏URL地址不变。
*代表前面0或更多个字符
+代表前面1或更多个字符
?代表前面0或1个字符
^代表字符串的开始位置
$代表字符串结束的位置
。为通配符,代表任何字符
什么是nginx防盗链功能 ?
防盗链的定义此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的
什么是https?
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
Nginx Cache缓存系统
如何配置proxy_cache?
在http段里加入下列几句:
http{
......
proxy_temp_path /home/temp_dir;
proxy_cache_path/data/nginx/tmp-test levels=1:2 keys_zone=tmp-test:100m
inactive=7d max_size=1000g;
}
代码说明:
proxy_cache_path 缓存文件路径
levels 设置缓存文件目录层次;levels=1:2 表示两级目录
keys_zone 设置缓存名字和共享内存大小
inactive 在指定时间内没人访问则被删除
max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
同一个url第二次访问,当同一个文件再次到达源站,proxy_cache就会找到其对应的缓存文件(命中缓存HIT)直接返回给请求端,无需再执行php程序,如图所示:
共同学习,写下你的评论
评论加载中...
作者其他优质文章