为了账号安全,请及时绑定邮箱和手机立即绑定

企业级Nginx实战

标签:
Nginx

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的模块从结构上分为核心模块、基础模块和第三方模块  

       

  1. 核心模块: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对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。


              讲一个找小明的例子帮助理解

https://img1.sycdn.imooc.com//5bd6bd0b0001daaa09170430.jpg

配置精讲及配置优化


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缓存系统

https://img1.sycdn.imooc.com//5bd6bf0000019aa107830314.jpg

     如何配置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 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。

https://img1.sycdn.imooc.com//5bd6c3000001a40708780313.jpg

同一个url第二次访问,当同一个文件再次到达源站,proxy_cache就会找到其对应的缓存文件(命中缓存HIT)直接返回给请求端,无需再执行php程序,如图所示:

https://img1.sycdn.imooc.com//5bd6c4180001fd4408650282.jpg

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消