登录linux服务器怎么做301重定向
方法/步骤
1
进入西部数码网站后台,点击虚拟主机管理,进入高级管理。
2
进入高级管理后,点击301转向。
3
这个页面的左边原域名的框框里面填上自己之前的域名,在右边的框框里面填上要重定向后的域名,这样在底下的框框内就出现了一段代码。
4
将代码复制,然后在桌面上新建一个记事本,打开记事本,将刚才那段代码粘贴进来,然后将记事本改名为htaccess,注意htaccess前面一定要有一个点,然后将此文件用ftp上传到空间的根目录下,这样就完成了301重定向。
5
如果是其他linux主机,就是直接将第三步中的那段代码写进记事本,然后改名为htaccess即可。
6
最后,就是看301重定向是否做成功,最简单的方法,就是在浏览器地址栏输入原来的网址,看是否转向到新的网址。如果转到新的网址上,就说明301重定向做成功了!
http://jingyanbaiducom/article/0a52e3f4237e67bf62ed729ahtml
负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡说白了其实就是伴随着微服务架构的诞生的产物;过去的单体架构,前端页面发起请求,然后后台接收请求直接处理,这个时候不存在什么负载均衡;但是随着单体架构向微服务架构的演变,每个后台服务可能会部署在多台服务器上面,这个时候页面请求进来,到底该由哪台服务器进行处理呢?所以得有一个选择,而这个过程就是负载均衡;同时选择的方案有很多种,例如随机挑选一台或者一台一台轮着来,这就是负载均衡算法。
也可以通过例子来帮助自己记忆,就好比古代皇帝翻牌子,最开始皇帝只有一个妃子,那不存在翻牌子这回事,再怎么翻也只能是这一个妃子侍寝。但是随着妃子多了,就得有选择了,不能同时让所有妃子一起侍寝。
工作原理图如下:
HTTP重定向服务器是一台普通的应用服务器,其唯一个功能就是根据用户的HTTP请求计算出一台真实的服务器地址,并将该服务器地址写入HTTP重定向响应中返回给用户浏览器。用户浏览器在获取到响应之后,根据返回的信息,重新发送一个请求到真实的服务器上。DNS服务器解析到IP地址为192168874,即HTTP重定向服务器的IP地址。重定向服务器计根据某种负载均衡算法算出真实的服务器地址为192168877并返回给用户浏览器,用户浏览器得到返回后重新对192168877发起了请求,最后完成访问。
这种负载均衡方案的优点是比较简单,缺点是浏览器需要两次请求服务器才能完成一次访问,性能较差;同时,重定向服务器本身的处理能力有可能成为瓶颈,整个集群的伸缩性规模有限;因此实践中很少使用这种负载均衡方案来部署。
DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。人们在通过浏览器访问网站时只需要记住网站的域名即可,而不需要记住那些不太容易理解的IP地址。在DNS系统中有一个比较重要的的资源类型叫做主机记录也称为A记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。如果你有一个自己的域名,那么要想别人能访问到你的网站,你需要到特定的DNS解析服务商的服务器上填写A记录,过一段时间后,别人就能通过你的域名访问你的网站了。DNS除了能解析域名之外还具有负载均衡的功能,下面是利用DNS工作原理处理负载均衡的工作原理图:
由上图可以看出,在DNS服务器中应该配置了多个A记录,如:
wwwwoshuaiqicom IN A 192168875;
wwwwoshuaiqicom IN A 192168876;
wwwwoshuaiqicom IN A 192168877;
因此,每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。上图中,用户请求wwwwoshuaiqicom,DNS根据A记录和负载均衡算法计算得到一个IP地址192168877,并返回给浏览器,浏览器根据该IP地址,访问真实的物理服务器192168877。所有这些操作对用户来说都是透明的,用户可能只知道wwwwoshuaiqicom这个域名。
DNS域名解析负载均衡有如下优点:
同时,DNS域名解析也存在如下缺点:
请求过程:
用户发来的请求都首先要经过反向代理服务器,服务器根据用户的请求要么直接将结果返回给用户,要么将请求交给后端服务器处理,再返回给用户。
反向代理负载均衡
优点:
缺点:
代码实现
由于不同的服务器配置不同,因此它们处理请求的能力也不同,给配置高的服务器配置相对较高的权重,让其处理更多的请求,给配置较低的机器配置较低的权重减轻期负载压力。加权轮询可以较好地解决这个问题。
1思路
根据权重的大小让其获得相应被轮询到的机会。
可以根据权重我们在内存中创建一个这样的数组{s1,s2,s2,s3,s3,s3},然后再按照轮询的方式选择相应的服务器。
2缺点:请求被分配到三台服务器上机会不够平滑。前3次请求都不会落在server3上。
Nginx实现了一种平滑的加权轮询算法,可以将请求平滑(均匀)的分配到各个节点上。
代码实现
代码实现
思路:这里我们是利用区间的思想,通过一个小于在此区间范围内的一个随机数,选中对应的区间(服务器),区间越大被选中的概率就越大。
已知:
s1:[0,1] s2:(1,3] s3 (3,6]
代码实现
代码实现
REST(Representational State Transfer)表象化状态转变(表述性状态转变),基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。
符合上述REST原则的架构方式称为RESTful
在Restful之前的操作:
http://127001/user/query/1 GET 根据用户id查询用户数据
http://127001/user/save POST 新增用户
http://127001/user/update POST 修改用户信息
http://127001/user/delete/1 GET/POST 删除用户信息
RESTful用法:
http://127001/user/1 GET 根据用户id查询用户数据
http://127001/user POST 新增用户
http://127001/user PUT 修改用户信息
http://127001/user DELETE 删除用户信息
之前的操作是没有问题的,大神认为是有问题的,有什么问题呢你每次请求的接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,我使用了get请求,就是查询使用post请求,就是新增的请求,我的意图很明显,完全没有必要做描述,这就是为什么有了restful
幂等性:对同一REST接口的多次访问,得到的资源状态是相同的。
安全性:对该REST接口访问,不会使用服务器端资源的状态发生改变。
SpringMVC原生态的支持了REST风格的架构设计
所涉及到的注解:
---@RequestMapping
---@PathVariable
---@ResponseBody
传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。
定义一个简单的restful接口
使用RestTemplate访问该服务
从这个例子可以看出,使用restTemplate访问restful接口非常的 简单粗暴无脑 。(url, requestMap, ResponseBeanclass)这三个参数分别代表 请求地址、请求参数、HTTP响应转换被转换成的对象类型。
RestTemplate方法的名称遵循命名约定,第一部分指出正在调用什么HTTP方法,第二部分指示返回的内容。本例中调用了restTemplatepostForObject方法,post指调用了HTTP的post方法,Object指将HTTP响应转换为您选择的 对象类型 。
RestTemplate定义了36个与REST资源交互的方法,其中的大多数都对应于HTTP的方法。其实,这里面只有11个独立的方法,其中有十个有三种重载形式,而第十一个则重载了六次,这样一共形成了36个方法。
实际上,由于Post 操作的非幂等性,它几乎可以代替其他的CRUD操作
目前主流的负载方案分为以下两种:
Ribbon 是一个基于 HTTP和TCP的客户端负载均衡工具。通过 Spring Cloud 的封装,可以让我们轻松地将面向服务的 REST 模版请求自动转换成客户端负载均衡的服务调用。
Spring Cloud Ribbon 虽然只是一个工具类框架,它不像服务注册中心、配置中心、API 网关那样需要独立部署,但是它几乎存在于每一个 Spring Cloud 构建的微服务和基础设施中。因为微服务间的调用,API 网关的请求转发等内容,实际上都是通过 Ribbon 来实现的(https://githubcom/Netflix/ribbon)。
Ribbon主要提供:
Ribbon模块介绍:
与Nginx的对比
应用场景的区别:
1先创建两个服务,用于负载均衡
Server 1 和Server2 的端口号要不同,不然起不来
Server 1接口如下:
Server 2接口如下:
启动类都是一样的,如下:
2创建一个调用方来请求这个接口
引依赖包
配置启动类,并注入 RestTemplate
配置一下 applicationproperties,如下:
3验证
再创建一个 测试方法来验证是否生效,放在test 目录下面,代码如下:
先启动 两个server ,然后在 测试 测试类 ,结果如下:
从结果可以看出实现了负载均衡,默认是 轮询策略,Client1和 clien2 依次调用。
Ribbon 中有两种和时间相关的设置,分别是请求连接的超时时间和请求处理的超时时间,设置规则如下:
Ribbon可以通过下面的配置项,来限制httpclient连接池的最大连接数量、以及针对不同host的最大连接数量。
负载均衡的核心,是通过负载均衡算法来实现对目标服务请求的分发。Ribbion中默认提供了7种负载均衡算法:
验证方法:
1在BaseLoadBalancerchooseServer()方法中加断点
2在RandomRulechoose()方法增加断点,观察请求是否进入。
自定义负载均衡的实现主要分几个步骤:
ILoadBalancer 接口实现类做了以下的一些事情:
修改applicationproperties文件
在ribbon负载均衡器中,提供了ping机制,每隔一段时间,就会去ping服务器,由 comnetflixloadbalancerIPing 接口去实现。
单独使用ribbon,不会激活ping机制,默认采用DummyPing(在RibbonClientConfiguration中实例化),isAlive()方法直接返回true。
ribbon和eureka集成,默认采用NIWSDiscoveryPing(在EurekaRibbonClientConfiguration中实例化的),只有服务器列表的实例状态为up的时候才会为Alive。
IPing中默认内置了一些实现方法如下。
在网络通信中,有可能会存在由网络问题或者目标服务异常导致通信失败,这种情况下我们一般会做容错设计,也就是再次发起请求进行重试。
Ribbon提供了一种重试的负载策略:RetryRule,可以通过下面这个配置项来实现
由于在单独使用Ribbon的机制下,并没有开启Ping机制,所以所有服务默认是认为正常的,则这里并不会发起重试。如果需要演示重试机制,需要增加PING的判断。
1引入依赖包
2创建一个心跳检查的类
3修改mall-portal中applicationproperties文件,添加自定义心跳检查实现,以及心跳检查间隔时间。
4在goods-service这个模块中,增加一个心跳检查的接口
5测试服务启动+停止,对于请求的影响变化。
LoadBalancer 是Spring Cloud自研的组件,支持WebFlux。
由于Ribbon停止更新进入维护状态,所以Spring Cloud不得不研发一套新的Loadbalancer机制进行替代。
1引入Loadbalancer相关jar包
2定义一个配置类,这个配置类通过硬编码的方式写死了goods-service这个服务的实例列表,代码如下
3创建一个配置类,注入一个LoadBalancerClient
4修改测试类
5为了更好的看到效果,修改goods-service模块,打印每个服务的端口号码。
可能是接入点有误,你看下你的接入点是“WAP”吗?如果是还是这样,就重新设置GPRS接入设置,方法咨询10086,客服会发给你的。
如果你以上都设置对的话,建议
刷机
。
SIP是由IETF提出来的一个应用控制(信令)协议。正如名字所隐含的--用于发起会话。它可用来创建、修改以及终结多个参与者参加的多媒体会话进程。参与会话的成员可以通过组播方式、单播连网或者两者结合的形式进行通信。
SIP中有客户机和服务器之分。客户机是指为了向服务器发送请求而与服务器建立连接的应用程序。用户代理(UserAgent)和代理(Proxy)中含有客户机。服务器是用于向客户机发出的请求提供服务并回送应答的应用程序。共有四类基本服务器:
·用户代理服务器:当接到SIP请求时它联系用户,并代表用户返回响应。
·代理服务器:代表其它客户机发起请求,既充当服务器又充当客户机的媒介程序。在转发请求之前,它可以改写原请求消息中的内容。
·重定向服务器:它接收SIP请求,并把请求中的原地址映射成零个或多个新地址,返回给客户机。
·注册服务器:它接收客户机的注册请求,完成用户地址的注册。用户终端程序往往需要包括用户代理客户机和用户代理服务器。代理服务器、重定向服务器和注册服务器可以看出是公众性的网络服务器。在SIP中还经常提到定位服务器的概念,但是定位服务器不属于SIP服务。
SIP在设计上充分考虑了对其它协议的扩展适应性。它支持许多种地址描述和寻址,包括用户名@主机地址:被叫号码@PSTN网关地址:Tel:010-62281234普通电话的描述等。这样,SIP主叫按照被叫地址就可以识别出被叫在传统电话网上的位置,然后通过一个与传统电话网相连的网关发起并建立呼叫。SIP最强大之处就是用户定位功能。SIP本身含有向注册服务器注册的功能,也可以利用其它定位服务器DNS、LDAP等提供的定位服务来增强其定位功能。
SIP共规定了六种信令:INVITE、ACK、CANCEL、OPTIONS、BYE、REGISTER。其中INVITE和ACK用于建立呼叫,完成三次握手,或者用于建立以后改变会话属性;BYE用以结束会话;OPTIONS用于查询服务器能力;CANCEL用于取消已经发出但未最终结束的请求;REGISTER用于客户出向注册服务器注册用户位置等消息。
SIP协议支持三种呼叫方式:由用户代理服务机(UAC)向用户代理服务器(UAS)直接呼叫,由UAC在重定向服务器的辅助下进行重定向呼叫和由代理服务器代表UAC向被叫发起呼叫。通过SIP代理建立呼叫的例子如图6-8所示。
H323和SIP协议的比较
H323和SIP分别是通信领域与因特网两大阵营推出的建议。H323企图把IP电话当作是众所周知的传统电话,只是传输方式发生了改变,由电路交换变成了分组交换。而SIP协议侧重于将IP电话作为因特网上的一个应用,较其实应用(如FTP,E-mail等)增加了信令和QoS的要求,它们支持的业务基本相同,也都利用RTP作为媒体传输的协议。但H323是一个相对复杂的协议。
H323采用基于ASN1和压缩编码规则的二进制方法表示其消息。ASN1通常需要特殊的代码生成器来进行词法和语法分析。而SIP的基于文本的协议,类似于HTTP。基于文本的编码意味着头域的含义是一目了然的,如From、To、Subject等域名。这种分布式、几乎不需要复杂的文档说明的标准规范夫风格,其优越性已在过去的实践中得到了充分的证明(现在广为流行的邮件协议SMTP就是这样的一个例子)。SIP的消息体部份采用SDP进行描述,SDP中的每一项格式为=,也比较简单。
在支持会议电话方面,H323由于由多点控制单元(MCU)集中执行会议控制功能,所有参加会议终端都向MCU发送控制消息,MCU可能会成为颈,特别是对于具有附加特性的大型会议;并且H323不支持信令的组播功能,其单功能限制了可扩展性,降低了可靠性。而SIP设计上就为分布式的呼叫模型,具有分布式的组播功能,其组播功能不仅便于会议控制,而且简化了用户定位、群组邀请等,并且能节约宽带。但是H323集是中控制便于计费,对宽带的管理也比较简单、有效。
H323中定义了专门的协议用于补充业务,如H4501、H4502和H4503等。SIP并未专门定义的协议用于此目的,但它很方便地支持补充业务或智能业务。只要充分利用SIP已定义的头域(如Contact头域),并对SIP进行简单的扩展(如增加几个域),就可以实现这些业务。例如对于呼叫转移,只要在BYE请求消息中添加Contact头域,加入意欲转至的第三方地址就可以实现此业务。对于通过扩展头域较难实现的一些智能业务,可在体系结构中增加业务代理,提供一些补充服务或与智能网设备的接口。
在H323中,呼叫建立过程涉及到第三条信令信致到:RAS信令信道、呼叫信令信到和H245控制信道。通过这三条信道的协调才使得H323的呼叫得以进行,呼叫建立时间很长。在SIP中,会话请求过程和媒体协商过程等一起进行。尽管H323v2已对呼叫建立过程作了改进,但较之SIP只需要15个回路时延来建立呼叫,仍是无法相比。H323的呼叫信令通道和H245控制信道需要可靠的传输协议。而SIP独立于低层协议,一般使用UDP等无法连接的协议,用自己信用层的可靠性机制来保证消息的可靠传输。
总之,H323沿用的是传统的实现电话信令模式,比较成熟,已经出现了不少H323产品。H323符合通信领域传统的设计思想,进行集中、层次控制,采用H323协议便于与传统的电话网相连。SIP协议借鉴了其它因特网的标准和协议的设计思想,在风格上遵循因特网一贯坚持的简练、开放、兼容和可扩展等原则,比较简单,但推出时间不长,协议并不是很成熟。
0条评论