Nginx是一款高性能的HTTP和反向代理服务器,其特点是占用内存少,并发能力强。事实上,Nginx的并发能力在同类Web服务器中确实表现得更好。Nginx是专门为性能优化而开发的。性能是其最重要的要求。它非常注重效率。据悉,Nginx最多可以支持5万个并发连接。Nginx知识网结构图Nginx知识网结构图如下:反向代理正向代理:局域网内的计算机用户直接访问网络是不可行的,只能通过代理服务器访问。此代理服务称为Forforwardproxy。反向代理:客户端无法感知代理,因为客户端不需要配置网络访问,只要向反向代理服务器发送请求,反向代理服务器会选择目标服务器获取数据,并且然后返回给客户端。此时反向代理服务器和目标服务器对外是同一台服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址。负载均衡客户端向服务器发送多个请求,服务器处理请求,其中一些请求可能需要与数据库进行交互。服务器完成处理后,将结果返回给客户端。大致的请求和响应流程如下图所示:但是随着信息量的增加,访问量和数据量迅速增加,通用的架构已经不能满足当前的需求。我们首先想到的是升级服务器配置。由于摩尔定律越来越失效,简单地提高硬件性能已经不可取了。如何解决这个需求?我们可以增加服务器的数量,搭建集群,把请求分发到每台服务器上,把原来请求单台服务器改为请求分发到多台服务器,也就是我们所说的负载均衡。图形负载均衡:假设有15个请求发给代理服务器,代理服务器会根据服务器的数量平均分配,每个服务器处理5个请求。这个过程称为负载平衡。动静分离为了加快网站的分析速度,可以将动态页面和静态页面交给不同的服务器进行分析,既加快了分析速度,又减轻了单台服务器的压力。动静分离前状态:动静分离后:安装参考链接:Nginx服务介绍和Nginx安装查看版本常用命令:./nginx-v启动:./nginx关闭(有两种方式,推荐使用./nginx-squit):./nginx-sstop./nginx-squit重新加载Nginx配置:./nginx-sreloadNginx配置文件配置文件由三部分组成:①全局块从配置文件到events块中,主要设置一些影响Nginx服务器整体运行的配置指令。并发处理服务的配置,值越大,可以支持的并发处理越多,但会受到硬件、软件等设备的限制。②事件块影响Nginx服务器和用户之间的网络连接。常用设置包括是否开启多个工作进程下的网络连接序列化,是否允许同时接收多个网络连接等等。最大支持连接数:③这里配置反向代理、负载均衡等HTTP块。位置[=|~|?*|^~]url{}location指令说明,该语法用于匹配url,语法如上:=:url前没有正则表达式,字符串必须与url严格匹配,匹配成功则停止搜索并处理请求。~:用于表示url中包含正则表达式,区分大小写。~*:用于表示url中包含正则表达式,不区分大小写。^~:在使用不带正则表达式的urls之前,要求Nginx服务器找到url和字符串匹配度最高的位置,并立即使用这个位置来处理请求,而不是匹配。如果有包含正则表达式的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准备工作:配置二tomcats,端口8080和8081,可以访问,端口可以修改配置文件。分别在新文件的内容中加上8080!!!和8081!!!反向代理总结第一个例子:浏览器访问www.123.com,从host文件中解析出服务器ip地址192.168.25.132www.123.com。然后默认访问80端口,通过Nginx监听80端口代理到本地8080端口,从而实现访问www.123.com,最后转发到tomcat8080。第二个例子:访问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:./nginx-sreload③在8081的Tomcatwebapps文件夹下新建edu文件夹和a.html文件,填写内容作为8081!!!!④在地址栏回车,会分配到不同的Tomcat服务器:负载均衡方式如下:轮询(默认)。权重,代表权,权重越高,优先级越高。公平,根据后端服务器的响应时间分配请求,响应时间最短的优先。ip_hash,每个请求根据访问ip的hash结果分配,让每个访问者固定访问一个后端服务器,可以解决Session问题。什么叫动静分离?将动态请求与静态请求分开并不意味着在物理上将动态页面与静态页面分开。可以理解为Nginx处理静态页面,Tomcat处理动态页面。动静分离大致有两种:单纯的将静态文件分离成单独的域名,放在单独的服务器上,也是目前主流的方案。混合和发布动态和静态文件,由Nginx分隔。动静分离分析:实战准备,静态文件准备:配置Nginx,如下图:Nginx高可用。如果Nginx有问题:解决办法:前期准备:在两台Nginx服务器上安装Keepalived虚拟ip,安装Keepalived:[root@192usr]#yuminstallkeepalived-y[root@192usr]#rpm-q-akeepalivedkeepalived-1.3.5-16.el7.x86_64修改配置文件:[root@192keepalived]#cd/etc/keepalived[root@192keepalived]#vikeepalived.conf分别复制粘贴以下配置文件,覆盖keepalived。conf,虚拟ip为192.168.25.50。需要修改对应??主机ip:smtp_server192.168.25.147(main)smtp_server192.168.25.147(standby)stateMASTER(main)stateBACKUP(standby)global_defs{notification_email{acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_fromAlexandre.Cassen@firewall.locsmtp_server192.168.25.147smtp_connect_timeout30router_idLVS_DEVEL#访问主机地址}vrrp_scriptchk_nginx{script"/usr/local/src/nginx_check.sh"#检测文件地址interval2执行间隔权重2#weight}vrrp_instanceVI_1{stateBACKUP#hostMASTER,backupBACKUPinterfaceens33#网卡virtual_router_id51#同一组需要一致priority90#访问优先级,host值越大,backup机越小advert_int1authentication{auth_typePASSauth_pass1111}virtual_ipaddress{192.168.25.50#虚拟ip}}启动命令如下:[root@192sbin]#systemctlstartkeepalived.service获取虚拟ip成功:关闭主机147的Nginx和Keepalived,发现它仍然可以访问。原理分析如下图所示,即启动了一个master和一个worker,master是管理员,worker是具体的工作进程。工人如何工作?如下图所示:总结worker的数量应该等于CPU的数量;一个master下多个worker可以热部署,worker是独立的,一个故障不会影响其他。
