简介

  • Engine X,一种web服务器,和Apache是同行。
  • Apache是一个重量级的、不支持高并发的服务器。
  • Nginx是一个轻量级高并发的服务器。
  • Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器。Nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为反向代理进行负载均衡的实现。

正向代理(forward proxy)

  • 位于国外的某些网站通过浏览器是没有办法直接访问的,此时可以用一个操作FQ进行访问。FQ的方式主要是找到一个可以访问国外网站的代理服务器,将请求发送给代理服务器,它会去访问国外的网站,然后将访问到的数据返回给我们。
  • 简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色。
  • 这样的代理模式称为正向代理,其特点是客户端非常明确要访问的服务器地址;而服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端。正向代理模式屏蔽或者隐藏了真实客户端信息。
  • 此外,使用代理服务器还有以下好处:
    • 提高访问速度:由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对热门网站能明显提高访问速度。
    • 防火墙作用:由于所有客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤掉某些不安全信息。同时正向代理中用户可以隐藏自己的ip,免受攻击。
    • 突破访问限制:也就是上面说的访问外网。互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点。通俗说,我们使用的翻墙浏览器就是利用了代理服务器,可以直接访问外网。

反向代理

  • 例如某宝网站由于访问量爆表,单个服务器远远不能满足需求,此时就会采用分布式部署,也就是通过部署多台服务器来解决访问人数限制的问题。
  • 多个客户端给服务器发送请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时,请求的来源也就是客户端是明确的,但是请求具体是由那台服务器处理的并不明确,Nginx扮演的就是一个反向代理的觉得。
  • 简单地说,A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。
  • 反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

区别

  • 位置不同
    • 正向代理,架设在客户机和目标主机之间。
    • 反向代理,架设在服务器端。
  • 代理对象不同
    • 正向代理,代理客户端,服务端不知道实际发起请求的客户端
    • 反向代理,代理服务端,客户端不知道实际提供服务的服务端

负载均衡

  • 实际项目中,反向代理和正向代理一般是存在于一个应用场景的。正向代理客户端请求访问目标服务器,目标服务器是一个反向代理服务器,反向代理了多台真实的业务处理服务器。
  • 而将接收到的请求按照一定的规则分发的过程,称为负载均衡。

参考文章

使用nginx实现负载均衡

  • nginx只负责拦截并转发客户端发起的请求,并不做页面的解析工作等,因为它没有处理servlet请求的能力,这些必须交给tomcat等servlet容器实现。所以在nginx上部署web项目必须配合tomcat实现,除非这个项目只有前端页面。
  • 通过修改配置文件nginx.conf(其注释符号为#)达到访问nginx代理服务器时跳转到指定服务器的目的。
  • 用proxy_pass配置请求的转发地址,当我们输入指定请求时将会跳转到该服务器。
upstream tomcat_server{
    server localhost:8080;

    /*配置多个服务器则:其中weight表示权重,即被访问几率;
      当第一个server挂掉时,自动访问第二个。
    server localhost:8080 weight=2;
    server 192.168.101.9:8080 weight=1;
    */
}

server{
    #监听端口
    listen  80;
    #主机名
    server_name localhost;

    #路径“/”表示默认的http://localhost:80,需要替换成应用的路径,如/chapter23-server
    location / { 
        #跳转到http://localhost:8080,即部署在tomcat的域名:端口号
        proxy_pass http://tomcat_server
        #配置静态资源(jpg|png|css|js...),浏览器访问http://localhost:80/1.png时, 
        自动到服务器F:/nginx-1.12.2/static目录下找1.png图片
        root F:/nginx/static;
        index index.html index.htm;
    }
}
  • 修改后需在nginx目录下执行nginx -s reload令改变生效。
  • 将应用部署到tomcat后,访问localhost/chapter23-server,即访问到该项目(地址栏不会改变)。

  • 参考文章