WEB应用之httpd基础入门(五)

  前文咱们聊到了httpd的启动用户和相关权限的说明,资源压缩配置、https的实现,回顾请参考http://www.javashuo.com/article/p-vtkzzgve-kx.html;今天咱们来讲说httpd的重定向、HSTS、反向代理的配置;html

  首先来了解下重定向吧,什么意思呢?假如咱们访问一个资源在服务器上不存在或者不在咱们对应访问URL下,而用户又不知道咱们新的URL的状况下,咱们怎么让用户访问到咱们新的URL呢?日常咱们访问某度,在浏览器上直接键入某度的域名,而后浏览器就直接给咱们响应,心细的你还会发现响应的不是http而是https,咱们明明没有用https访问某度,为何响应的页面倒是https呢?其实这就是http的重定向;所谓重定向就是咱们访问的URL对应资源再也不原来的位置,而对于用户来讲,用户数不知道URL背后对应的位置上哪里,若是服务端不配置重定向,那么用户访问到的资源要么不是最新的要么访问不到,为了解决这样一个问题,重定向就起着把用户的请求转发到新URL上的做用;它的原理是这样的,用户访问某一资源,当服务端收到用户的请求后,检查用户访问的URL对应资源不在原来的位置,此时服务器会以301或302的状态码响应客户端,意思就是告诉客户端访问的资源再也不这个位置,对应的位置服务端会经过location首部告诉客户端,客户端收到这个响应报文后会再次向服务端新发来的URL再次请求,获得响应的资源响应;nginx

  httpd实现重定向须要用到redirect指令,它的配置语法是Redirect [status] URL-path URL;status表示状态信息,permanent表示返回永久重定向状态码 301;temp表示返回临时重定向状态码302. 此为默认值;web

  示例:把用户访问http的请求临时重定向到https后端

   提示:以上配置意思是用户访问/https这个URI的时候,就会临时重定向到https://www.test.com,固然redirect这个指令能够用在server配置段中,虚拟主机配置段中,也能够用在directory配置段中和.htaccess文件中;浏览器

  测试:安全

   提示:能够看到咱们访问www.test.com/https,浏览器访问这个URL时,在响应报文中给咱们了一个location响应首部,而且把新的URL告诉咱们,而后浏览器自动去访问location中的新URL ,最终把https://www.test.com的响应结果给咱们;服务器

  示例2:经过rewrite来实现http访问跳转为https网络

   提示:以上配置表示,开启rewrite功能,并对用户访问任何内容的的URI 重写为https://用户访问的请求报文中host首部/index.html,意思就是用户访问www.test.com/abc.html服务端收到这样的请求后,它会把用户的URL重写为https://www.test.com/index.html,无论用户访问www.test.com下的任何内容,都会被处理为访问https://www.test.com/index.html测试

  测试:网站

   提示:能够看到咱们在浏览器上无论访问www.test.com/下的任何内容,都给咱们跳转为https://www.test.com/index.html了;

  HSTS:HTTP Strict Transport Security,翻译过来就是http严格传输安全,咱们经过上面的示例能够发现一个点,就是用户第一次访问服务端的时候,它俩是经过http协议传输数据,众所周知http协议是明文传输数据的,假设用户第一次访问服务端的时候,被黑客中间把数据截获并篡改了,可想而知,客户端收到不是真正服务端的信息,而是被黑客篡改了的响应报文,后续客户端就极可能不是访问真正服务端响应给客户端的URL,而是黑客篡改后的,这样一来无疑存在着安全隐患;为了解决这样的问题,服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将全部HTTP访问请求在内部作307跳转到HTTPS。而无需任何网络过程,这样一来黑客就没法经过网络来抓取咱们的信息;HSTS preload list是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表;意思就是在HSTS preload list中的网站就能够实如今浏览器内部跳转把http跳转为https;

  httpd配置实现HSTS是经过Header always set Strict-Transport-Security 指令实现,后面要给定一个最大时长,表示在给定的时长浏览器请求该网站都会使用https去访问;

  示例:

   提示:以上表示设置strict-transport-security响应首部的值为max-age=31536000,这样配置后,咱们本身的网站就支持HSTS

   提示:能够看到咱们访问www.test.com对应响应报文就有Strict-Transport-Security响应首部;

   httpd做为代理服务器;

  首先咱们来了解代理的概念吧,所谓代理就是本身没有能力去作的事,让别人帮着作,咱们把这种帮别人干事的角色称为代理,我不知道这样解释是否正确;好比,咱们想去访问某网站,可是该网站却只有特定的网络才能够访问获得,这个时候如何让其余非特定网络的其余用户访问到呢?其实代理就是这个做用,做为客户端,代理能够帮助客户端去访问特定网络的资源,做为服务端,代理能够帮助服务端响应客户端的请求;它两不一样的是,在客户端的那一侧咱们一般叫正向代理,意思就是代理客户端访问特定网络资源,这只是针对http web服务来说是这样的,但不管怎样讲,正向代理就是帮助客户端去干某事;在服务端一侧咱们一般把代理叫作反向代理,意思就是它代理服务端响应客户端的请求;代理其实咱们能够理解为中间的“人”,它既当客户端,又当服务端,只是咱们站在不一样的角度对它的称呼不同;正向代理的角色的原理就是当客户端的报文发送到代理服务器后,代理客户端会更改客户端的源IP或源端口信息;在真正服务端上看到的请求一般是正向代理的ip和端口;而对于反向代理来讲,它主要是代理服务端响应客户端的请求,它一般是修改客户端的目标IP或目标端口,在客户端响应的报文里看,一般是代理服务器的做为响应报文的源IP或源端口的响应,而在后端真正提供服务的服务端上看,请求报文一般是反向代理服务器的源IP或源端口;从上面的描述,代理服务器承担了两个角色,面向客户端它是服务端,面向服务端它是客户端;因此咱们在客户端看到的响应报文源IP信息和端口都是代理服务器的,在服务端看到的请求报文源端口信息也都是代理服务器的源端口信息;一般状况下正向代理除了能够帮助客户端访问外界资源外,它还能够起到隐藏客户端的目的;而对于反向代理,它除了能够帮助服务端响应客户端的请求,同时它也能够起到隐藏服务端的做用,这样一来,客户端和服务端都是经过代理实现了数据交互;在现实生活中咱们访问的web服务一般都是基于这两种代理来的,这也是代理最重要的做用;

   httpd反向代理的功能是基于proxy模块实现的,其中最经常使用也是最重要的指令是proxypass和ProxyPassReverse

  示例:

   提示:以上配置表示客户端访问/nginx这个URI时,会将用户请求反代到后面咱们真正指定的网站上;也就是说咱们用浏览器访问www.test.com/nginx就会访问到nginx官方主页上去;

   提示:能够看到咱们在虚拟主机里加了proxypass和proxypassreverse指令后,咱们访问对应URI,浏览器会将咱们的请求跳转到对应咱们指定的URL上去;固然咱们也能够把proxypass指令用于location中;而proxypassreverse指令的主要做用是防止客户端绕过反代服务器,直接请求后端主机;以上就是httpd简单指令的使用更多关于httpd指令的使用,请参考官方文档示例说明;

相关文章
相关标签/搜索