secure boot怎么关闭(详解securecrt使用教程)

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33更新文章,每天掉亿点点头发…

源码精品专栏

原创 | Java 2021超神之路,很肝~

中文详细注释的开源项目

RPC 框架 Dubbo 源码解析

网络应用框架 Netty 源码解析

消息中间件 RocketMQ 源码解析

数据库中间件 Sharding-JDBC 和 MyCAT 源码解析

作业调度中间件 Elastic-Job 源码解析

分布式事务中间件 TCC-Transaction 源码解析

Eureka 和 Hystrix 源码解析

Java 并发源码

article/details/108300342

第一章:Nginx概述第二章:Nginx单实例安装第三章:Nginx反向代理第四章:Nginx负载均衡第五章:Nginx动静分离第六章:Nginx高可用集群第七章:Nginx配置详解第八章:Nginx原理分析

secure boot怎么关闭(详解securecrt使用教程)第一章:Nginx概述

1.1、Nginx概述

Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.2、Nginx官网

1.3、Nginx用处

Nginx可以作为静态页面的Web服务器,同时还支持CGI协议的动态语言,比如Perl、PHP等。但是不支持Java。Java程序只能通过与Tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。

第二章:Nginx单实例安装2.1、环境说明

模拟工具:VMware-workstation-full-15.5.6-16341506.exe

操作系统:CentOS-6.10-x86_64-bin-DVD1.iso、纯净安装、桌面版

内存大小:2GB

连接工具:SecureCRT

2.2、安装依赖[root@caochenlei~]#yuminstall-ygccgcc-c makelibtoolwgetpcrepcre-develzlibzlib-developensslopenssl-devel2.3、Nginx下载[root@caochenlei~]#wgethttp://nginx.org/download/nginx-1.18.0.tar.gz2.4、Nginx解压[root@caochenlei~]#tar-zxvfnginx-1.18.0.tar.gz2.5、Nginx安装[root@caochenlei~]#cdnginx-1.18.0[root@caochenleinginx-1.18.0]#./configure[root@caochenleinginx-1.18.0]#make&&makeinstall

注意:安装完成后的路径为:/usr/local/nginx

2.6、Nginx命令

普通启动服务:/usr/local/nginx/sbin/nginx

配置文件启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

暴力停止服务:/usr/local/nginx/sbin/nginx -s stop优雅停止服务:/usr/local/nginx/sbin/nginx -s quit检查配置文件:/usr/local/nginx/sbin/nginx -t重新加载配置:/usr/local/nginx/sbin/nginx -s reload查看相关进程:ps -ef | grep nginx2.7、开放防火墙[root@caochenlei~]#/sbin/iptables-IINPUT-ptcp–dport80-jACCEPT[root@caochenlei~]#/etc/rc.d/init.d/iptablessaveiptables:将防火墙规则保存到/etc/sysconfig/iptables:[确定]2.8、启动后效果

基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot Dubbo 。未来,会重构成 Spring Cloud Alibaba 。

第三章:Nginx反向代理3.1、概述

3.2、配置反向代理实例1

3.2.1、实现效果

3.2.2、实现思路

3.2.3、实现步骤

步骤一:修改Windows中的hosts域名映射

复制“C:\Windows\System32\drivers\etc\hosts”到桌面,右键记事本打开,在里边加上以下代码保存,然后再复制回去,不要直接修改,会不让保存!

#虚拟机域名映射的网址192.168.206.128www.123.com

步骤二:修改Nginx中的配置文件并启动

[root@caochenlei~]#vi/usr/local/nginx/conf/nginx.confserver{listen80;server_name192.168.206.128;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{proxy_passhttp:127.0.0.1:8080;roothtml;indexindex.htmlindex.htm;}[root@caochenlei~]#/usr/local/nginx/sbin/nginx

步骤三:下载Tomcat、解压Tomcat、安装Tomcat、启动Tomcat

注意:Tomcat启动需要JDK,在这里我没有安装,使用系统自带的OpenJDK Runtime Environment (rhel-2.6.14.10.el6-x86_64 u181-b00)

下载:

[root@caochenlei~]#wgethttps://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.105/bin/apache-tomcat-7.0.105.tar.gz

解压:

[root@caochenlei~]#tar-zxvfapache-tomcat-7.0.105.tar.gz

安装:

[root@caochenlei~]#mvapache-tomcat-7.0.105/usr/local/tomcat

启动:

[root@caochenlei~]#/usr/local/tomcat/bin/startup.sh

添加到防火墙:

[root@caochenlei~]#/sbin/iptables-IINPUT-ptcp–dport80-jACCEPT[root@caochenlei~]#/etc/rc.d/init.d/iptablessave

如果关闭请用:

[root@caochenlei~]#/usr/local/tomcat/bin/shutdown.sh

3.2.4、关闭服务

[root@caochenlei~]#/usr/local/nginx/sbin/nginx-squit[root@caochenlei~]#/usr/local/tomcat/bin/shutdown.sh3.3、配置反向代理实例2

3.3.1、实现效果

使用Nginx反向代理,根据访问的路径跳转到不同端口的服务中。

3.3.2、实现思路

3.3.3、实现步骤

步骤一:修改Nginx的配置文件,然后启动

[root@caochenlei~]#vi/usr/local/nginx/conf/nginx.confserver{listen80;server_name192.168.206.128;#charsetkoi8-r;#access_loglogs/host.access.logmain;location~/edu/{proxy_passhttp://127.0.0.1:8080;}location~/vod/{proxy_passhttp://127.0.0.1:8081;}[root@caochenlei~]#/usr/local/nginx/sbin/nginx

步骤二:拷贝两个Tomcat,将其中一个的端口信息修改为8081,开启防火墙,然后分别启动这两台Tomcat

解压:

[root@caochenlei~]#tar-zxvfapache-tomcat-7.0.105.tar.gz[root@caochenlei~]#mvapache-tomcat-7.0.105/usr/local/tomcat1[root@caochenlei~]#tar-zxvfapache-tomcat-7.0.105.tar.gz[root@caochenlei~]#mvapache-tomcat-7.0.105/usr/local/tomcat2

删除:

[root@caochenlei~]#rm-f/usr/local/tomcat2/conf/server.xml

添加:

[root@caochenlei~]#vi/usr/local/tomcat2/conf/server.xml<?xmlversion=’1.0’encoding=’utf-8′?><!–LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTICEfiledistributedwiththisworkforadditionalinformationregardingcopyrightownership.TheASFlicensesthisfiletoYouundertheApacheLicense,Version2.0(the”License”);youmaynotusethisfileexceptincompliancewiththeLicense.YoumayobtainacopyoftheLicenseathttp://www.apache.org/licenses/LICENSE-2.0Unlessrequiredbyapplicablelaworagreedtoinwriting,softwaredistributedundertheLicenseisdistributedonan”ASIS”BASIS,WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.SeetheLicenseforthespecificlanguagegoverningpermissionsandlimitationsundertheLicense.–><!–Note:A”Server”isnotitselfa”Container”,soyoumaynotdefinesubcomponentssuchas”Valves”atthislevel.Documentationat/docs/config/server.html–><Serverport=”8006″shutdown=”SHUTDOWN”><ListenerclassName=”org.apache.catalina.startup.VersionLoggerListener”/><!–Securitylistener.Documentationat/docs/config/listeners.html<ListenerclassName=”org.apache.catalina.security.SecurityListener”/>–><!–APRlibraryloader.Documentationat/docs/apr.html–><ListenerclassName=”org.apache.catalina.core.AprLifecycleListener”SSLEngine=”on”/><!–InitializeJasperpriortowebappsareloaded.Documentationat/docs/jasper-howto.html–><ListenerclassName=”org.apache.catalina.core.JasperListener”/><!–Preventmemoryleaksduetouseofparticularjava/javaxAPIs–><ListenerclassName=”org.apache.catalina.core.JreMemoryLeakPreventionListener”/><ListenerclassName=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener”/><ListenerclassName=”org.apache.catalina.core.ThreadLocalLeakPreventionListener”/><!–GlobalJNDIresourcesDocumentationat/docs/jndi-resources-howto.html–><GlobalNamingResources><!–EditableuserdatabasethatcanalsobeusedbyUserDatabaseRealmtoauthenticateusers–><Resourcename=”UserDatabase”auth=”Container”type=”org.apache.catalina.UserDatabase”description=”Userdatabasethatcanbeupdatedandsaved”factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”pathname=”conf/tomcat-users.xml”/></GlobalNamingResources><!–A”Service”isacollectionofoneormore”Connectors”thatshareasingle”Container”Note:A”Service”isnotitselfa”Container”,soyoumaynotdefinesubcomponentssuchas”Valves”atthislevel.Documentationat/docs/config/service.html–><Servicename=”Catalina”><!–Theconnectorscanuseasharedexecutor,youcandefineoneormorenamedthreadpools–><!–<Executorname=”tomcatThreadPool”namePrefix=”catalina-exec-“maxThreads=”150″minSpareThreads=”4″/>–><!–A”Connector”representsanendpointbywhichrequestsarereceivedandresponsesarereturned.Documentationat:JavaHTTPConnector:/docs/config/http.html(blocking&non-blocking)JavaAJPConnector:/docs/config/ajp.htmlAPR(HTTP/AJP)Connector:/docs/apr.htmlDefineanon-SSLHTTP/1.1Connectoronport8080–><Connectorport=”8081″protocol=”HTTP/1.1″connectionTimeout=”20000″redirectPort=”8444″/><!–A”Connector”usingthesharedthreadpool–><!–<Connectorexecutor=”tomcatThreadPool”port=”8081″protocol=”HTTP/1.1″connectionTimeout=”20000″redirectPort=”8444″/>–><!–DefineanSSLHTTP/1.1Connectoronport8443ThisconnectorusestheBIOimplementationthatrequirestheJSSEstyleconfiguration.WhenusingtheAPR/nativeimplementation,theOpenSSLstyleconfigurationisrequiredasdescribedintheAPR/nativedocumentation–><!–<Connectorport=”8444″protocol=”org.apache.coyote.http11.Http11Protocol”maxThreads=”150″SSLEnabled=”true”scheme=”https”secure=”true”clientAuth=”false”sslProtocol=”TLS”/>–><!–DefineanAJP1.3Connectoronport8009–><!–<Connectorprotocol=”AJP/1.3″address=”::1″port=”8010″redirectPort=”8444″/>–><!–AnEnginerepresentstheentrypoint(withinCatalina)thatprocesseseveryrequest.TheEngineimplementationforTomcatstandaloneanalyzestheHTTPheadersincludedwiththerequest,andpassesthemontotheappropriateHost(virtualhost).Documentationat/docs/config/engine.html–><!–YoushouldsetjvmRoutetosupportload-balancingviaAJPie:<Enginename=”Catalina”defaultHost=”localhost”jvmRoute=”jvm1″>–><Enginename=”Catalina”defaultHost=”localhost”><!–Forclustering,pleasetakealookatdocumentationat:/docs/cluster-howto.html(simplehowto)/docs/config/cluster.html(referencedocumentation)–><!–<ClusterclassName=”org.apache.catalina.ha.tcp.SimpleTcpCluster”/>–><!–UsetheLockOutRealmtopreventattemptstoguessuserpasswordsviaabrute-forceattack–><RealmclassName=”org.apache.catalina.realm.LockOutRealm”><!–ThisRealmusestheUserDatabaseconfiguredintheglobalJNDIresourcesunderthekey”UserDatabase”.AnyeditsthatareperformedagainstthisUserDatabaseareimmediatelyavailableforusebytheRealm.–><RealmclassName=”org.apache.catalina.realm.UserDatabaseRealm”resourceName=”UserDatabase”/></Realm><Hostname=”localhost”appBase=”webapps”unpackWARs=”true”autoDeploy=”true”><!–SingleSignOnvalve,shareauthenticationbetweenwebapplicationsDocumentationat:/docs/config/valve.html–><!–<ValveclassName=”org.apache.catalina.authenticator.SingleSignOn”/>–><!–Accesslogprocessesallexample.Documentationat:/docs/config/valve.htmlNote:Thepatternusedisequivalenttousingpattern=”common”–><ValveclassName=”org.apache.catalina.valves.AccessLogValve”directory=”logs”prefix=”localhost_access_log.”suffix=”.txt”pattern=”%h%l%u%t&quot;%r&quot;%s%b”/></Host></Engine></Service></Server>

开启Tomcat2的防火墙:

[root@caochenlei~]#/sbin/iptables-IINPUT-ptcp–dport8081-jACCEPT[root@caochenlei~]#/etc/rc.d/init.d/iptablessave

在每一个Tomcat的WebApps中创建一个文件夹和一个a.html文件:

[root@caochenlei~]#mkdir-p/usr/local/tomcat1/webapps/edu[root@caochenlei~]#echo”<h1>Thisis8080Port</h1>”>/usr/local/tomcat1/webapps/edu/a.html[root@caochenlei~]#mkdir-p/usr/local/tomcat2/webapps/vod[root@caochenlei~]#echo”<h1>Thisis8081Port</h1>”>/usr/local/tomcat2/webapps/vod/a.html

启动:

[root@caochenlei~]#/usr/local/tomcat1/bin/startup.sh[root@caochenlei~]#/usr/local/tomcat2/bin/startup.sh

步骤三:打开本机浏览器进行测试

在浏览器输入:http://192.168.206.128/edu/a.html

在浏览器输入:http://192.168.206.128/vod/a.html

3.3.4、关闭服务

[root@caochenlei ~]# /usr/local/nginx/sbin/nginx -s quit[root@caochenlei ~]# /usr/local/tomcat1/bin/shutdown.sh[root@caochenlei ~]# /usr/local/tomcat2/bin/shutdown.sh

3.4、location指令说明

描述:该指令用于匹配URL。

语法:

通配符:

=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。~:用于表示uri包含正则表达式,并且区分大小写。~*:用于表示uri包含正则表达式,并且不区分大小写。^~:用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

注意:如果uri包含正则表达式,则必须要有~或者~*标识。

第四章:Nginx负载均衡4.1、概述

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?

我们首先想到的可能是升级服务器的配置,比如提高CPU执行频率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能够满足需求的。那么怎么办呢?

上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

4.2、实现效果

4.3、实现思路

4.4、实现步骤

第一步:修改Nginx的配置文件

[root@caochenlei ~]# vi /usr/local/nginx/conf/nginx.confupstreammyserver{server192.168.206.128:8080;server192.168.206.128:8081;}server{listen80;server_name192.168.206.128;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{proxy_passhttp://myserver;}[root@caochenlei~]#/usr/local/nginx/sbin/nginx

第二步:在Tomcat2的webapps文件夹中,创建一个edu文件夹,在里边创建a.html

创建:

[root@caochenlei~]#mkdir-p/usr/local/tomcat2/webapps/edu[root@caochenlei~]#echo”<h1>Thisis8081Port</h1>”>/usr/local/tomcat2/webapps/edu/a.html

启动:

[root@caochenlei~]#/usr/local/tomcat1/bin/startup.sh[root@caochenlei~]#/usr/local/tomcat2/bin/startup.sh

第三步:测试效果

打开IE浏览器输入:http://192.168.206.128/edu/a.html

打开IE浏览器输入:http://192.168.206.128/edu/a.html

4.5、关闭服务

[root@caochenlei ~]# /usr/local/nginx/sbin/nginx -s quit[root@caochenlei ~]# /usr/local/tomcat1/bin/shutdown.sh[root@caochenlei ~]# /usr/local/tomcat2/bin/shutdown.sh

4.6、分配策略

轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

weight:weight代表权重,默认为1,权重越高被分配的客户端越多,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:

ip_hash:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:

fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。例如:

第五章:Nginx动静分离5.1、概述

Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过Nginx来分开。

5.2、实现效果

如果不设置动静分离,默认会通过Nginx的反向代理去找Tomcat对应的资源,现在我们在根目录下创建一个/data/www/文件夹,里边放上静态资源,比如一个html页面,在8080的那台Tomcat的WebApps下也创建一个www目录,同样是放一个静态资源,当输入这个静态资源的请求时,访问到的是/data/www中的数据。

5.3、实现思路

5.4、实现步骤

第一步:创建静态资源文件,为了对比,Tomcat中也放一个

[root@caochenlei~]#mkdir-p/data/www/[root@caochenlei~]#mkdir-p/usr/local/tomcat/webapps/ROOT/www[root@caochenlei~]#echo”<h1>/data/www/a.html</h1>”>/data/www/a.html[root@caochenlei~]#echo”<h1>/usr/local/tomcat/webapps/ROOT/www/a.html</h1>”>/usr/local/tomcat/webapps/ROOT/www/a.html

第二步:修改Nginx的配置文件

[root@caochenlei~]#vi/usr/local/nginx/conf/nginx.confserver{listen80;server_name192.168.206.128;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/www/{root/data/;indexindex.htmlindex.htm;}[root@caochenlei~]#/usr/local/nginx/sbin/nginx

第三步:启动Tomcat

[root@caochenlei~]#/usr/local/tomcat/bin/startup.sh

第四步:启动浏览器进行测试

打开浏览器输入:http://192.168.206.128/www/a.html

5.5、关闭服务[root@caochenlei~]#/usr/local/nginx/sbin/nginx-squit[root@caochenlei~]#/usr/local/tomcat/bin/shutdown.sh第六章:Nginx高可用集群6.1、概述

前边我们学习了反向代理、负载均衡、动静分离,但试想一下,如果Nginx挂掉了,那么服务肯定就没有了,有没有一种解决方案,可以保证Nginx挂掉了,服务也可以照常使用,答案肯定是有的,这就是我们接下来要学习的高可用集群,采用的是一主一备的模式,当主节点Nginx挂掉,备份服务器Nginx立刻跟上,这样就保证了服务的高可用性。

6.2、实现效果

当主节点Nginx挂掉以后,服务依然可以正常使用。

6.3、实现思路

6.4、实现步骤

第一步:修改主

Kubernetes 是目前唯一被业界广泛认可的 Docker 分布式解决方案。通过Kubernetes,我们可以轻装上阵的开发与管理复杂的业务系统。Kubernetes 已经毫无疑问地成为容器领域当之无愧的事实标准。

节点上的Nginx的配置文件

[root@caochenlei~]#vi/usr/local/nginx/conf/nginx.confupstreammyserver{server192.168.206.128:8080;server192.168.206.128:8081;}server{listen80;server_name192.168.206.128;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{proxy_passhttp://myserver;}[root@caochenlei~]#/usr/local/nginx/sbin/nginx

第二步:启动主节点上的两台Tomcat

[root@caochenlei~]#/usr/local/tomcat1/bin/startup.sh[root@caochenlei~]#/usr/local/tomcat2/bin/startup.sh

第三步:安装主节点上的keepalived

安装keepalived:

[root@caochenlei~]#yuminstall-ykeepalived

删除keepalived的配置文件:

[root@caochenlei~]#rm-f/etc/keepalived/keepalived.conf

新增keepalived的配置文件:

[root@caochenlei~]#vi/etc/keepalived/keepalived.conf

注意:一定要注意router_id、state、interface的值,我就在这里踩坑了。

新增keepalived的检测脚本:

[root@caochenlei~]#vi/etc/keepalived/nginx_check.sh#!/bin/bashif[“$(ps-ef|grep”nginx:masterprocess”|grep-vgrep)”==””]thenkillallkeepalivedfi

启动keepalived服务:

[root@caochenlei~]#servicekeepalivedstart

第四步:准备一台全新的虚拟机,安装Nginx和keepalived

启动虚拟机:

安装Nginx依赖:

[root@caochenlei~]#yuminstall-ygccgcc-c makelibtoolwgetpcrepcre-develzlibzlib-developensslopenssl-devel

下载Nginx文件:

[root@caochenlei~]#wgethttp://nginx.org/download/nginx-1.18.0.tar.gz

安装Nginx程序:

[root@caochenlei~]#tar-zxvfnginx-1.18.0.tar.gz[root@caochenlei~]#cdnginx-1.18.0[root@caochenleinginx-1.18.0]#./configure[root@caochenleinginx-1.18.0]#make&&makeinstall[root@caochenleinginx-1.18.0]#cd~

开放Nginx防火墙:

[root@caochenlei~]#/sbin/iptables-IINPUT-ptcp–dport80-jACCEPT[root@caochenlei~]#/etc/rc.d/init.d/iptablessaveiptables:将防火墙规则保存到/etc/sysconfig/iptables:[确定]

修改Nginx的配置:

[root@caochenlei~]#vi/usr/local/nginx/conf/nginx.confupstreammyserver{server192.168.206.128:8080;server192.168.206.128:8081;}server{listen80;server_name192.168.206.128;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{proxy_passhttp://myserver;}

启动Nginx的服务:

[root@caochenlei~]#/usr/local/nginx/sbin/nginx

安装keepalived:

[root@caochenlei~]#yuminstall-ykeepalived

删除keepalived的配置文件:

[root@caochenlei~]#rm-f/etc/keepalived/keepalived.conf

新增keepalived的配置文件:

[root@caochenlei~]#vi/etc/keepalived/keepalived.conf

注意:一定要注意router_id、state、interface的值,我就在这里踩坑了。

新增keepalived的检测脚本:

[root@caochenlei~]#vi/etc/keepalived/nginx_check.sh#!/bin/bashif[“$(ps-ef|grep”nginx:masterprocess”|grep-vgrep)”==””]thenkillallkeepalivedfi

启动keepalived服务:

[root@caochenlei~]#servicekeepalivedstart

第五步:测试两个Nginx是否能正确的将请求分发到不同的Tomcat(负载均衡)

打开IE浏览器输入:http://192.168.206.128/edu/a.html

按住F5多刷新两遍,看看会不会,将请求转发到Tomcat2中去。

打开IE浏览器输入:http://192.168.206.129/edu/a.html

按住F5多刷新两遍,看看会不会,将请求转发到Tomcat2中去。

打开IE浏览器输入:http://192.168.206.50/edu/a.html,测试虚拟IP能不能实现负载均衡。

按住F5多刷新两遍,看看会不会,将请求转发到Tomcat2中去。

6.5、关闭服务

主机节点:

[root@caochenlei~]#servicekeepalivedstop[root@caochenlei~]#/usr/local/nginx/sbin/nginx-squit[root@caochenlei~]#/usr/local/tomcat1/bin/shutdown.sh[root@caochenlei~]#/usr/local/tomcat2/bin/shutdown.sh

备份节点:

[root@caochenlei~]#servicekeepalivedstop[root@caochenlei~]#/usr/local/nginx/sbin/nginx-squit第七章:Nginx配置详解

Nginx是通过配置文件来做到各个功能的实现的。Nginx的配置文件的格式非常合乎逻辑,学习这种格式以及如何使用这种每个部分是基础,这将帮助我们有可能手工创建一个配置文件。

7.1、整体结构图

7.2、配置演示图

7.3、全局块

配置影响Nginx全局的指令。主要包括:

配置运行Nginx服务器用户(组)worker process数Nginx进程PID存放路径错误日志的存放路径一个Nginx进程打开的最多文件描述符数目

例如:

#配置worker进程运行用户(和用户组),nobody也是一个Linux用户,一般用于启动程序,没有密码usernobody;#userwwwwww;#配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量worker_processes1;#配置全局错误日志及类型,[debug|info|notice|warn|error|crit],默认是errorerror_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#配置进程pid文件pidlogs/nginx.pid;#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与Nginx进程数相除,但是Nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。worker_rlimit_nofile65535;7.4、events块

配置影响Nginx服务器或与用户的网络连接。主要包括:

事件驱动模型的选择最大连接数的配置

例如:

#参考事件模型,use[kqueue|rtsig|epoll|/dev/poll|select|poll];#epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。useepoll;#单个进程最大连接数(最大连接数=连接数*进程数)worker_connections65535;7.5、http块

可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。主要包括:

定义MIMI-Type自定义服务日志允许sendfile方式传输文件连接超时时间单连接请求数上限

例如:

#常见的一些基础配置includemime.types;#文件扩展名与文件类型映射表default_typeapplication/octet-stream;#默认文件类型charsetutf-8;#默认编码server_names_hash_bucket_size128;#服务器名字的hash表大小client_header_buffer_size32k;#上传文件大小限制large_client_header_buffers464k;#设定请求缓冲client_max_body_size8m;#设定请求缓冲sendfileon;#开启高效文件传输模式,对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。autoindexon;#开启目录列表访问,合适下载服务器,默认关闭。tcp_nopushon;#防止网络阻塞tcp_nodelayon;#防止网络阻塞keepalive_timeout120;#长连接超时时间,单位是秒#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。fastcgi_connect_timeout300;fastcgi_send_timeout300;fastcgi_read_timeout300;fastcgi_buffer_size64k;fastcgi_buffers464k;fastcgi_busy_buffers_size128k;fastcgi_temp_file_write_size128k;#gzip模块设置gzipon;#开启gzip压缩输出gzip_min_length1k;#最小压缩文件大小gzip_buffers416k;#压缩缓冲区gzip_http_version1.0;#压缩版本(默认1.1,前端如果是squid2.5请使用1.0)gzip_comp_level2;#压缩等级gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;#压缩类型gzip_varyon;#增加响应头’Vary:Accept-Encoding’limit_zonecrawler$binary_remote_addr10m;#开启限制IP连接数的时候需要使用7.6、server块

配置虚拟主机的相关参数,一个http中可以有多个server。主要包括:

配置网络监听配置https服务基于名称的虚拟主机配置基于IP的虚拟主机配置

例如:

#虚拟主机的常见配置server{listen80;#配置监听端口server_namelocalhost;#配置服务名charsetutf-8;#配置字符集access_loglogs/host.access.logmain;#配置本虚拟主机的访问日志location/{roothtml;#root是配置服务器的默认网站根目录位置,默认为Nginx安装主目录下的html目录indexindex.htmlindex.htm;#配置首页文件的名称}error_page404/404.html;#配置404错误页面error_page500502503504/50x.html;#配置50x错误页面}#配置https服务,安全的网络传输协议,加密传输,端口443server{listen443ssl;server_namelocalhost;ssl_certificatecert.pem;ssl_certificate_keycert.key;ssl_session_cacheshared:SSL:1m;ssl_session_timeout5m;ssl_ciphersHIGH:!aNULL:!MD5;ssl_prefer_server_cipherson;location/{roothtml;indexindex.htmlindex.htm;}}7.7、location块

配置请求的路由,以及各种页面的处理情况。主要包括:

请求根目录配置更改网站默认首页配置location的URI

例如:

location的URI:

描述:该指令用于匹配URL

语法:

通配符:

=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。~:用于表示uri包含正则表达式,并且区分大小写。~*:用于表示uri包含正则表达式,并且不区分大小写。^~:用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

注意:如果uri包含正则表达式,则必须要有~或者~*标识。

第八章:Nginx原理分析8.1、Nginx的线程模型?

Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求。

Nginx的进程模型如图所示:

8.2、worker的工作模式?

worker对于连接是采用争抢的模式,谁先抢到就先交给谁处理,如果想要重新更新配置,由于已经抢到任务的worker不会参与争抢,那些空闲的worker就会去争抢连接,拿到连接后会自动更新配置信息,当那些有任务的worker完成任务后,会自动更新配置,这样就实现了无缝热部署。由于每个worker是独立的进程,如果有其中的一个worker出现问题,并不会影响其它worker继续进行争抢,在实现请求的过程,不会造成服务中断,建议worker数和服务器的CPU数相等是最为适宜的。

8.3、如何计算worker连接数?

如果只访问Nginx的静态资源,一个发送请求会占用了woker的2个连接数

而如果是作为反向代理服务器,一个发送请求会占用了woker的4个连接数

8.4、如何计算最大的并发数?

如果只访问nginx的静态资源,最大并发数量应该是:worker_connections * worker_processes / 2

而如果是作为反向代理服务器,最大并发数量应该是:worker_connections * worker_processes / 4

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

发表评论

登录后才能评论