Nginx作为代理服务

作者: InnocenceYWQ | 来源:发表于2018-08-19 19:34 被阅读65次

一. 为什么使用Nginx

  • 要回答为什么要使用nginx,那就先说说nginx能做些什么。
    首先,nginx能做反向代理,那么什么是反向代理呢,举个栗子,我想在本地使用 www.test.com 的域名去访问 www.taobao.com。那么这个时候我们就可以通过nginx去实现。
    再者,nginx能实现负载均衡,什么是负载均衡呢?就是我的项目部署在不同的服务器上,但是通过统一的域名进入,nginx则对请求进行分发,减轻了服务器的压力。
    在上面这两种情况下,nginx服务器的作用都只是作为分发服务器,真正的内容,我们可以放在其他的服务器上,这样来,还能起到一层安全隔壁的作用,nginx作为隔离层。
    其次,nginx还能解决跨域的问题。

nginx作为web服务器一个重要的功能就是反向代理。
nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。


二. 为什么要使用代理服务器

    1. 提高访问速度
      由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
    1. 防火墙作用
      由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
    1. 通过代理服务器访问不能访问的目标站点
      互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。

三. 反向代理 VS 正向代理

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
代理示意图:

image.png
image.png

正向代理和反向代理
正向代理:我们所使用的代理软件就是正向代理。在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!
上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

image.png image.png
反向代理:配置在服务端,分发客户端请求到不同的服务端
比如淘宝天猫京东等,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;其中大部分功能也是直接使用nginx进行反向代理实现的,并且通过封装nginx和其他的组件之后起了个高大上的名字:Tengine
image.png
通过上述的图解可知,多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

image.png
代理区别
image.png image.png

一个最简单的反向代理与负载均衡的例子,如下图所示,传统项目都是用户直接访问tomcat服务,这样的话,当用户访问量很大的情况下,tomcat便不堪其受,挂掉了,为了解决高并发的情况,便采用Nginx作为反向代理服务器,由它来管理多个tomcat,可以采用轮询的方式(平均分配请求数量),由于每个tomcat所在的设备的性能也可能不一样,因此也可以设置不同的权重,性能好的服务器就多分配点访问量,性能差点的就少分点,用户只需要统一访问Nginx反向代理服务器即可,Nginx会把请求分给不同的tomcat去解决。


image.png

nginx配置

  • nginx是一个功能非常强大的web服务器加反向代理服务器,同时又是邮件服务器等等
  • 在项目使用中,使用最多的三个核心功能是反向代理、负载均衡和静态服务器
    这三个不同的功能的使用,都跟nginx的配置密切相关,nginx服务器的配置信息主要集中在nginx.conf这个配置文件中,并且所有的可配置选项大致分为以下几个部分:
main                                # 全局配置
events {                            # nginx工作模式配置
}
http {                                # http设置
    ....
    server {                        # 服务器主机配置
        ....
        location {                    # 路由配置
            ....
        }
        location path {
            ....
        }
        location otherpath {
            ....
        }
    }
    server {
        ....
        location {
            ....
        }
    }
    upstream name {                    # 负载均衡配置
        ....
    }
}

如上述配置文件所示,主要由6个部分组成:

  • main:用于进行nginx全局信息的配置
  • events:用于nginx工作模式的配置
  • http:用于进行http协议信息的一些配置
  • server:用于进行服务器访问信息的配置
  • location:用于进行访问路由的配置
  • upstream:用于进行负载均衡的配置

nginx配置反向代理示例

环境:

nginx1:192.168.1.2
tomcat1:192.168.1.3
tomcat2:192.168.1.4

先使用yum安装的nginx

配置nginx:

vim /etc/nginx/conf.d/default.conf 

内容:

#负责压缩数据流
gzip              on;  
gzip_min_length   1000;  
gzip_types        text/plain text/css application/x-javascript;

#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream hello{
    server 192.168.68.3:8080 weight=1;
    server 192.168.68.45:8080 weight=1;            
}
   
server {
    #侦听的80端口
    listen       80;
    server_name  localhost;
    #设定查看Nginx状态的地址
    location /nginxstatus{
         stub_status on;
         access_log on;
         auth_basic "nginxstatus";
         auth_basic_user_file htpasswd;
    }
    #匹配以jsp结尾的,tomcat的网页文件是以jsp结尾
    location / {
        index index.jsp;
        proxy_pass   http://hello;    #在这里设置一个代理,和upstream的名字一样
        #以下是一些反向代理的配置可删除
        proxy_redirect             off; 
        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_set_header           Host $host; 
        proxy_set_header           X-Real-IP $remote_addr; 
        proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
        client_max_body_size       10m; #允许客户端请求的最大单文件字节数
        client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数
        proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    }
}

启动:
nginx
退出:
nginx -s quit
启动nginx后,访问http://192.168.1.2/test/
会被导航到http://192.168.1.3:8080/test/http://192.168.1.4:8080/test/
从而实现了负载均衡和避免单点故障。

相关文章

  • Nginx作为代理服务

    一. 为什么使用Nginx 要回答为什么要使用nginx,那就先说说nginx能做些什么。首先,nginx能做反向...

  • Nginx作为代理服务

    一、代理服务代理-代为办理(代理理财、代理收货等等) 1.1正向代理 1.2反向代理 1.3代理区别 1.4配置语...

  • Nginx 配置(二)

    1. Nginx 负载均衡 1.1 概述 Nginx 作为代理服务器角色, 有正向代理和反向代理 两种. 正向代理...

  • 使用NGINX作为HTTPS正向代理服务器

    NGINX主要设计作为反向代理服务器,但随着NGINX的发展,它同样能作为正向代理的选项之一。正向代理本身并不复杂...

  • 常用Nginx

    Nginx 功能丰富,可以作为HTTP服务器,也可作为反向代理服务器 ,邮件服务器 常用功能 反向代理 代理对象为...

  • 蓝盾守护设计书

    服务端架构设计 如图1所示,受控端和管理端请求nginx服务器,nginx作为反向代理服务,代理应用服务A、应用服...

  • nginx代理功能与负载均衡

    一:nginx功能:Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCG...

  • nginx的简单介绍和配置

    nginx是一个提供http和反向代理的web服务器。 首先nginx可以作为反向代理是作为内部服务器暴露在外的一...

  • Nginx配置Tomcat集群

    Nginx Nginx常用功能 Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。 Ngi...

  • Nginx笔记 2018-01-16

    Nginx 常用功能 Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。Nginx在做反向...

网友评论

本文标题:Nginx作为代理服务

本文链接:https://www.haomeiwen.com/subject/zrntiftx.html