|
|
51CTO旗下网站
|
|
移步端
  • 就是要让你搞懂Nginx,这篇就够了!

    Nginx 是一番高性能的 HTTP 和反向代理服务器,特色是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中显示较好。

    笔者:渐暖 来源:51CTO艺术栈| 2020-09-10 09:31

    Nginx 是一番高性能的 HTTP 和反向代理服务器,特色是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中显示较好。

    图表来自 Pexels

    Nginx 专为性能优化而付出,性能是人家最重要的要求,十分重视效率,有报告 Nginx 能支持高达 50000 个并发连接数。

    Nginx 文化网结构图

    Nginx 的所见所闻网结构图如下:

    反向代理

    正向代理:局域网中的电脑用户想要直接访问网络是不中用的,只能通过代理服务器来访问,这种代理服务就把称为正向代理。

    反向代理:客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,下一场再回去到客户端。

    此刻反向代理服务器和对象服务器对外就是一番服务器,暴露的是代理服务器地址,隐身了实际服务器 IP 地点。

    负载均衡

    客户端发送多个请求到铁器,传感器处理请求,有部分可能要与必发娱乐登录进行交互,传感器处理完毕后,再将结果返回给客户端。

    一般说来请求和响应过程如下图:

    但是随着信息数量增长,配图量和数量量飞速增长,一般说来架构无法满足现在的急需。

    咱们第一想到的是升级服务器配置,可以由于摩尔定律的日益失效,单纯从硬件提升性能已经逐渐不可取了,怎么解决这种需要呢?

    咱们可以增加服务器的多寡,构建集群,名将请求分发到各个服务器上,名将原来请求集中到单个服务器的状况改为请求分发到多个航天器,也就是咱们说的载荷均衡。

    图解负载均衡:

    假设有 15 个请求发送到代理服务器,这就是说由代理服务器根据服务器数量,平均分配,每个服务器处理 5 个请求,其一过程就叫做负载均衡。

    状态分离

    为了加速网站的剖析速度,可以把动态页面和变态页面交给不同之蒸发器来分析,加紧解析的进度,降低由单个服务器的压力。

    状态分离之前的状态:

    状态分离之后:

    Nginx 如何在 Linux 安装

    参考链接:

          
    1. https://blog.csdn.net/yujing1314/article/details/97267369 

    Nginx 公用命令

    翻开版本:

          
    1. ./nginx -v 

    起先:

          
    1. ./nginx 

    关闭(有两种方法,引进使用 ./nginx -s quit):

          
    1. ./nginx -s stop 
    2. ./nginx -s quit 

    重新加载 Nginx 安排:

          
    1. ./nginx -s reload 

    Nginx 的配置文件

    配置文件分三部分构成:

    ①全局块

    副配置文件开始到 events 块之间,重点是设置一些影响 Nginx 传感器整体运行的安排指令。

    并发处理服务的安排,值越大,可以支持的并发处理量越多,但是会受到硬件、硬件等设施的制约。

    ②events 块

    影响 Nginx 传感器与用户之网络相联,公用的安装包括是否开启对多 workprocess 从的网络相联进行序列化,只是同意同时收到多个网络相联等等。

    支持的最大连接数:

    ③HTTP 块

    诸如反向代理和负载均衡都在此配置。

          
    1. location[ = | ~ | ~* | ^~] url{ 
    2.  

    location 指令说明,该语法用来匹配 url,语法如上:

  • =:用于不含正则表达式的 url 明天,渴求字符串与 url 从严匹配,匹配成功就停止滑坡搜索并处理请求。
  • ~:用于表示 url 包含正则表达式,并且区分大小写。
  • ~*:用于表示 url 包含正则表达式,并且不区分大小写。
  • ^~:用于不含正则表达式的 url 明天,渴求 Nginx 传感器找到表示 url 和字符串匹配度最高的 location 此后,立即采取此 location 拍卖请求,而不再匹配。
  • 如果有 url 包含正则表达式,不需要有 ~ 起来标识。

    反向代理实战

    ①安排反向代理

    目的:在新石器地址栏输入地址 www.123.com 跳转 Linux 系统 Tomcat 主页面。

    ②现实实现

    先配置 Tomcat,因为比较简便,此地不再赘叙,并在 Windows 走访:

    现实流程如下图:

    修改之前:

    安排如下:

    再次访问:

    ③反向代理 2

    目标:

  • 走访 http://192.168.25.132:9001/edu/ 直接跳转到 192.168.25.132:8080
  • 走访 http://192.168.25.132:9001/vod/ 直接跳转到 192.168.25.132:8081
  • 未雨绸缪:安排两个 Tomcat,端口分别为 8080 和 8081,都得以访问,端口修改配置文件即可。

    兴建文件内容分别添加 8080!!!和 8081!!!

    呼唤如下图:

    现实安排如下:

    重新加载 Nginx:

    ./nginx -s reload

    走访:

    贯彻了同一个端口代理,穿过 edu 和 vod 途径的改制显示不同之页面。

    反向代理小结

    先后一个例子:传感器访问 www.123.com,由 host 文件解析出服务器 ip 地点

    192.168.25.132 www.123.com。

    下一场默认访问 80 端口,而通过 Nginx 监听 80 端口代理到地方的 8080 端口上,故而实现了走访 www.123.com,末了转发到 tomcat 8080 上去。

    其次个比喻:

  • 走访 http://192.168.25.132:9001/edu/ 直接跳转到 192.168.25.132:8080
  • 走访 http://192.168.25.132:9001/vod/ 直接跳转到 192.168.25.132:8081
  • 实际上就是通过 Nginx 监听 9001 端口,下一场通过正则表达式选择转发到 8080 还是 8081 的 Tomcat 上去。

    负载均衡实战

    ①修改 nginx.conf,如下图:

    ②重启 Nginx:

          
    1. ./nginx -s reload 

    ③在 8081 的 Tomcat 的 webapps 文件夹下新建 edu 文件夹和 a.html 文件,填写内容为 8081!!!!

    ④在地址栏回车,就会分发到不同之 Tomcat 传感器上:

    负载均衡方式如下:

  • 轮询(默认)。
  • weight,代表权,权越高优先级越高。
  • fair,按下端服务器的响应时间来分配请求,应当时间短的优先分配。
  • ip_hash,每个请求按照访问 ip 的 hash 结果分配,这样每一个访客固定的走访一个下端服务器,可以解决 Session 的题材。
  • 状态分离实战

    什么是场面分离?把动态请求和变态请求分开,不是讲动态页面和变态页面物理分离,可以了解为 Nginx 拍卖静态页面,Tomcat 拍卖动态页面。

    状态分离大致分为两种:

  • 单纯将静态文件独立成单独域名放在独立的蒸发器上,也是现阶段主流方案。
  • 名将动态跟静态文件混合在总共发布,穿过 Nginx 离别。
  • 状态分离图析:

    实战准备,未雨绸缪静态文件:

    安排 Nginx,如下图:


    Nginx 高可用

    如果 Nginx 出现问题:

    消灭办法:

    最初准备:

  • 两台 Nginx 传感器
  • 安装 Keepalived
  • 编造 ip
  • 安装 Keepalived:

          
    1. [root@192 usr]# yum install keepalived -y 
    2. [root@192 usr]# rpm -q -a keepalived 
    3. keepalived-1.3.5-16.el7.x86_64 

    修改配置文件:

          
    1. [root@192 keepalived]# cd /etc/keepalived 
    2. [root@192 keepalived]# vi keepalived.conf 

    离别将如下配置文件复制粘贴,覆盖掉 keepalived.conf,编造 ip 为 192.168.25.50。

    对应主机 ip 要求修改的是:

  • smtp_server 192.168.25.147(东道主)smtp_server 192.168.25.147(备)
  • state MASTER(东道主) state BACKUP(备)
  •       
    1. global_defs { 
    2.    notification_email { 
    3.      acassen@firewall.loc 
    4.      failover@firewall.loc 
    5.      sysadmin@firewall.loc 
    6.    } 
    7.    notification_email_from Alexandre.Cassen@firewall.loc 
    8.    smtp_server 192.168.25.147 
    9.    smtp_connect_timeout 30 
    10.    router_id LVS_DEVEL # 走访的主机地址 
    11.  
    12. vrrp_script chk_nginx { 
    13.   script "/usr/local/src/nginx_check.sh"  # 检测文件的地点 
    14.   interval 2   # 检测脚本执行的距离 
    15.   weight 2   # 权重 
    16.  
    17. vrrp_instance VI_1 { 
    18.     state BACKUP    # 长机MASTER、备机BACKUP     
    19.     interface ens33   # 网卡 
    20.     virtual_router_id 51 # 同一组需一致 
    21.     priority 90  # 走访优先级,长机值较大,备机较小 
    22.     advert_int 1 
    23.     authentication { 
    24.         auth_type PASS 
    25.         auth_pass 1111 
    26.     } 
    27.     virtual_ipaddress { 
    28.         192.168.25.50  # 编造ip 
    29.     } 

    起先代码如下:

          
    1. [root@192 sbin]# systemctl start keepalived.service 

    走访虚拟 ip 成功:

    关闭主机 147 的 Nginx 和 Keepalived,意识仍然可以访问。

    原理解析

    如下图,就是启动了一番 master,一度 worker,master 是管理员,worker是现实工作之经过。

    worker 如何工作?如下图:

    总结

    worker 数应该和 CPU 数相等;一度 master 多个 worker 可以运用热部署,同时 worker 是矗立的,一度挂了不会影响其他的。

    笔者:渐暖°

    编纂:陶家龙

    出处:blog.csdn.net/yujing1314/article/details/107000737

    【编纂推荐】

    1. Graylog2:副Nginx募集日志并在Grafana官方展示与分析
    2. 一文知晓HTTP的长连接和短连接
    3. 面试官:送我说话Nginx如何实现四层负载均衡?
    4. 「查缺补漏」巩固你的Nginx文化体系
    5. 就是要让你搞懂Nginx,这篇就够了
    【义务编辑: 武晓燕 TEL:(010)68476606】

    点赞 0
  • Nginx    HTTP  办理服务器
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    云原生架构实践

    云原生架构实践

    新技术引领移动互联网进入急速赛道
    共3章 | KaliArch

    人口订阅学习

    数据中心和VPDN网络建设案例

    数据中心和VPDN网络建设案例

    漫画+老
    共20章 | 捷哥CCIE

    162人口订阅学习

    筹建数据中心实验Lab

    筹建数据中心实验Lab

    试验平台Datacenter
    共5章 | ITGO(老曾)

    107人口订阅学习

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微

        
  •