当前位置: 首页 > 后端技术 > Java

神器Nginx学习手册(推荐收藏)

时间:2023-04-01 23:47:40 Java

Nginx是一款高性能的HTTP和反向代理服务器,其特点是内存占用小,并发能力强。事实上,Nginx的并发能力确实在同类型的Web服务器中。更好的。Nginx是专门为性能优化而开发的。性能是其最重要的要求。它非常注重效率。据悉,Nginx最多可以支持5万个并发连接。01Nginx知识网结构图Nginx知识网结构图如下:02反向代理正向代理:局域网内的计算机用户直接访问网络是不可行的,只能通过代理服务器访问。这种代理服务称为转发代理。反向代理:客户端无法感知代理,因为客户端不需要配置网络访问,只要向反向代理服务器发送请求,反向代理服务器会选择目标服务器获取数据,并且然后返回给客户端。此时反向代理服务器和目标服务器对外是同一台服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址。03负载均衡客户端向服务端发送多个请求,服务端处理请求,其中部分请求可能需要与数据库进行交互。服务器完成处理后,将结果返回给客户端。大致的请求和响应流程如下图所示:但是随着信息量的增加,访问量和数据量迅速增加,通用的架构已经不能满足当前的需求。我们首先想到的是升级服务器配置。由于摩尔定律越来越失效,简单地提高硬件性能已经不可取了。如何解决这个需求?我们可以增加服务器的数量,搭建集群,把请求分发到每台服务器上,把原来请求单台服务器改为请求分发到多台服务器,也就是我们所说的负载均衡。图形负载均衡:假设有15个请求发给代理服务器,代理服务器会根据服务器的数量平均分配,每个服务器处理5个请求。这个过程称为负载平衡。04动静分离为了加快网站的分析速度,可以将动态页面和静态页面交给不同的服务器进行分析,加快了分析速度,减轻了单台服务器的压力。动静分离前状态:动静分离后:05NginxinstallNginx如何在Linux上安装Nginx参考链接:https://blog.csdn.net/yujing1314/article/details/97267369Nginx常用命令查看版本:./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,则不需要在开头加上~标记。06反向代理实战①配置反向代理目的:在浏览器地址栏输入地址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!!!响应如下图:具体配置如下:ReloadNginx:./nginx-sreload访问:实现同端口代理,切换edu和vod路径显示不同页面。反向代理总结第一个例子:浏览器访问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。07负载均衡实践①修改nginx.conf,如下图:②重启Nginx:./nginx-sreload③在8081的Tomcatwebapps文件夹下新建edu文件夹和a.html文件,填写内容为8081!!!!④在地址栏回车,会分配到不同的Tomcat服务器:负载均衡方式如下:轮询(默认)。权重,代表权,权重越高,优先级越高。公平,根据后端服务器的响应时间分配请求,响应时间最短的优先。ip\_hash,每个请求根据访问ip的hash结果分配,这样每个访问者固定访问一个后端服务器,可以解决Session问题。08动静分离作战什么是动静分离?将动态请求与静态请求分开并不意味着在物理上将动态页面与静态页面分开。可以理解为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(backup)stateMASTER(main)stateBACKUP(backup)global_defs{notification_email{acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_fromalexandre.cassen@firewall.locsmtp_server192.168.25.147smtp_connect_timeoutsmtp_connect_timeout30router_idlvs_devellvs_devellvevel#interval2#检测脚本执行的间隔weight2#权重}vrrp_instanceVI_1{stateBACKUP#主机MASTER,备BACKUP接口ens33#网卡virtual_router_id51#同组必须一致priority90#访问优先级的值高于主机,小advard_int1authentication{auth_typepassauth_pass1111}virtual_ipaddress{192.168.25.50#虚拟ip}}}}启动启动:[root@root@192sbin]#systemctlsystemctlstartstartlstartlsateralived.service.service.service.serviceipipipip成功:访问访问和Keepalived,发现仍然可以访问。原理分析如下图所示,即启动了一个master和一个worker,master是管理员,worker是具体的工作进程。工人如何工作?如下图所示:总结worker的数量应该等于CPU的数量;一个master下多个worker可以热部署,worker是独立的,一个故障不会影响其他。